Clean up UserDataAdapter

Wrapped dynamic_cast in a cereal exception,
made the rtti function private,
updated test case to expect failure on some cases