Found some tests that appear to ensure broken behavior.  Updated and code fixes are coming.
Found another test that appears to rely on broken behavior.
Updated tests to use explicitly mentioned roles and to fix type coercion bugs after serialization.
This commit represents a big changeset that consolidates the serialization on
top of `apply_shape`.

The concept of `apply_shape` is local to the `MultiType` classes.  I now feel
the name `MultiType` is confusing and I might change it to `CompoundType`, to
make the intent more obvious.  `apply_shape` is applied to compound types
because we can't be sure if the compound type has types or models in it. The
new recursion allows us to ask the compount types themselves to apply the
coercion functions.  Almost all of the redundant logic that used to exist in
the `filter_by_role` functions is now in just the main implementation of
`apply_shape`.

Almost all of the tests are passing with this commit, except for two tests for
flattening behavior.  I am working on those next but feel this thought is now
complete and worth committing.
Added the `print_none` keyword to `apply_shape`.  This completes the migration
towards a recursive structure for the main serialization functions.

Also with this commit, every test is passing.  Wahoo!
Merge branch 'fix_recursion'
Merging in latest changes from the community.

Merge branch 'master' of github.com:j2labs/schematics