I have started work on this now and have a skeleton going of what I want to do, I think the best thing I can do is:
1. Finish implementing `typeEnforce(Value, Value, bool)`
2. Write unit tests which setup scenarios where it should pass, pass with coercion and fail so that I can be insured it works
3. Start moving code over to using it