cleanup tests
Cleanup Serializer role:

This seems long but it's not really complicated. I couldn't see a
way to make it in multiple steps. And there's no need.

Here's what I did:
* We send the logger object to other engines.
* The Serializer engine now checks itself instead of App.
* Try::Tiny instead of eval{}.
* Quite a few tests for it.
* Removing 'loaded' subroutine requirement. Not needed. Not used.
* Add a predicate to logger.
* Some more descriptive test descriptions.
* Some indentation.

The predicate to logger is so we don't actually call the logger in
a silly test.

Bonus bit of knowledge: The following line actually calls the
attribute builder:

    ( logger => $self->logger )x!! $self->has_logger_engine

You would think the left is evaluated after the right and only
then executed. No. It actually runs the left side and then decides
whether to add it or not (according to how many "times" the right
evaluates to (which will evaluates to a 0 or 1).
spacing
small bits
try_load_class instead
diag -> note where appropriate
fix headers
add note about serializer changes
normalize
add an additional comment
add logger attribute to other engines as well
another note in document
reflect changes
Merge branch 'sawyer/cleanups'