Overhauled to use Data.Foreign

Obj is imported into pure land with data.Foreign behind an
either and some maybe goodness to protect the system.

Still needs work and a lot more design but is coming along
nicely.