Added more error info
Don't fail when target is not an object
Handle when target wants a JsonValue
Cleaned up code
Moved lexer and parser to Internals namespace

Makes it more explicit that these types are not for public consumption