Make to_native throw a catchable exception

Makes it so we don't effectively abort() on type mismatch
Add missing {}
vexing parse...
Remove unnecessary template<>
Add needed std::
Remove mismatched struct / class
Use unique_ptr
Remove iostream include.

Also move TCorrupt to be defined using <base/thrower> (Which means we now get line numbers / HERE handling)

And fix people who relied on the iostream that shouldn't have been there
Merge pull request #218 from cmaloney/to-native

Make to_native throw a catchable exception
Merge pull request #219 from cmaloney/misc-fixes

Misc fixes
Merge pull request #222 from cmaloney/general-cleanup

General cleanup