curried Either and added Left and Right

properties are prepended with _ to allow functions left() and right()
isRight() added to pass strict mode

>  Imo currying is not applicable in that case, because a curried Either is a Left and will not be able to become a Right (or you must swap the values).

I disagree. You can check `arguments.length` when calling `Either` and return a function when given one arg.

> I suppose a `Left.prototype.of` returns a `Left` and a `Right.prototype.of` and `Either.prototype.of` a Right.

looks reasonable to me. `of` should also be static on each constructor.

> `Right.prototype.map` should decide to return either `Left` of `Right` based on the return value of `f`.

ok, so you are suggesting something like:

```
Right.prototype.map = function(f) {
    var out = f(this.value);
    return out == null ? new Left(out) : new Right(out);
}
```

that one seems a little odd to me. Wrapping `null` in a `Left` doesn't give you any useful information. seems to me as though `f` must be a function that returns a value that can be wrapped in a `Right`, so you get a simpler impl:

```
Right.prototype.map = function(f) {
    return new Right(f(this.value));
}
```