Houston preserves types on edits

All it really does is feed the new value into the old values constructor, then saves it, so this assumes that `new constructor(val.toString()) == val`, which I think should be true.

Fixes #181 
Fixes #173 
Fixes #147