Don't return undef when a ref is passed to an engine builder.
Get the 'session' from the engines, not the settings.
Inline some code in the `->engine' method and remove a comment.
Get the session from the engines, not the settings.

Also, there's no need to croak if the engine is not set, this is already done
by the ->engine method.
Try to build the session engine correctly.