NSJSONSerialization start

I started taking a look at the `NSJSONSerialization` work that needs to be done. I’ll send a pull-request for what I have once I get some more tests running. Anyone interested can see the first commit here: https://github.com/owensd/swift-corelibs-foundation/commit/29c840fa7089dd9370d8199591dbbeb733a0105f\.

That said, I’ve already seen some issues, I logged a couple here:

  - [SR-71] NSNumber returns incorrect values for doubleValue · Issue #4476 · apple/swift-corelibs-foundation · GitHub
  - [SR-72] NSNumber is missing much parity · Issue #4475 · apple/swift-corelibs-foundation · GitHub

Another problem is how NSJSONSerialization works today. When things are not right (such as an invalid top-level JSON object), exceptions are raised. Obviously, this is not good. The function is marked with `throws` so I’ve started a new `ErrorType` implementation. I’ve started one here:

    public enum NSJSONSerializationError : ErrorType {
        case InvalidTopLevelType
        case InvalidKeyTypeForObject
        case InvalidValueType

I’m not sure what the process really is here and how iterative you really want our pull requests. Any info would be helpful.