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
    runSomeAsyncLibFunctionWithCallback $ \result -> resolve a result  --
this is where I use Future.sig
    return a

useFuture = do
    val <- getFuture
    val.map $ \result -> ...  -- Future.map
```