Reducible

Adds `ReducibleType` and `ReducibleOf`.

Includes a test of `ReducibleOf` which demonstrates a runtime crash.
Shouldn't `map` over `Either` be…?
```swift
func map<T, U, V>(either: Either<T, U>, f: U -> V> -> Either<T, V> {
    switch either {
    case let .Left(x): return .Left(Box(x))
    case let .Right(x): return .Right(Box(f(x)))
    }
}
```