Progress towards #46
experimenting with a cast
Some ideas on solving adapters

This is a solution for #46 that uses RTTI to allow get_user_data to work
and throw an error when used in an archive that doesn't actually have user
data.  Unfortunately this is a run-time check and uses a dummy virtual function
that is never actually called (so the overhead of this will be very low, a few bytes
for the vtable, no runtime cost).

Another solution I'm going to play around with involves re-arranging some templates and
typedefs.
Clean up UserDataAdapter

Wrapped dynamic_cast in a cereal exception,
made the rtti function private,
updated test case to expect failure on some cases
Doxygen doc updates for #46
finish unit test for #46
Merge branch 'issue_46' into develop relates #46
Fix forward decl for #46
Passing tests on linux