Flexible numerical optimization with ensmallen