Clean up JSON operators

- Organize operators for Arrays and Values
- Reduce duplication by reusing single implementation
Use `?` for optional unwrapping

We needed to use `*` for optionals because of limitations in older
versions of Swift. However, with Swift 1.1, we are now able to use `?`
as a character in an operator.
Use infix operators for JSON decoding

Now that we have the JSONValue enum set up, we can go back to using
infix functions for the JSON decoding. This brings us back to the syntax
we started with, and brings us closer to Aeson's syntax.