Refactoring: more dry model properties

@boxtcarpel per our discussions on Monday, added the expected type enforcement to an `NSJSONSerialization` category. I've left the macro in BoxModel.h because with this change it is much simpler (no compound statement) and I think it makes the code more readable and succinct.

Let me know what you think.

This pull adds test coverage for the new category and continues to pass all existing model tests.