Minor API changes

- Added list reverse:
```swift
public func reverse() -> List<A> {
  return self.foldl(flip(List.cons), initial: List())
}
```
- Future and some monoids have `@auto_closure`s now.
- Added Array and Dictionary To / From classes that don't require the other, so you can still `JSONDecode` an array of something that can not be encoded. #69 
- JSON api changes: no longer using the Scala "object" pattern. Instead using class functions for `toJSON`. Please tell me if something is harder to write now.
result() just get's the result right?  here's my basic flow in a slightly bastardized haskell

```haskell
getFuture :: Future A
getFuture = do
    a <- newFuture  -- Future.init
    -- below is where I use Future.sig
    runSomeAsyncLibFunctionWithCallback $ \result -> resolve a result
    return a

useFuture = do
    val <- getFuture
    -- Future.map
    val.map $ \result -> ...