Rewrite of Maybe with Just and Nothing

A whole new implementation that splits the behaviour of Maybe into Just and Nothing. The `Maybe` constructor decides if its a `Just` or a `Nothing`, after that each subclass decides that to do with `map`, `ap`, `of` and `chain`. Because of this, it avoid continuous `null` checks and performs better;  actually, `Nothing` doesn't even store a value!!!

Also added an additional `isNothing : bool` *getter* property that is useful to tell which of the two classes an object belongs.