Implementation of super classes

Not quite ready to go; I just wanted to submit a PR to see what people think so far.

Some things left to do:

- [ ] All implied members are defined (somewhere) when creating an instance
- [ ] Do not allow defining implied members
- [x] Let someone choose the syntax
- [ ] Start changing the standard library to see how it could work
- [ ] Check whether super-class names should get qualified
- [ ] Get tests passing

You can try it out by modifying the prelude:

```haskell
class (Prelude.Functor m) <= Bind m where
  (>>=) :: forall a b. m a -> (a -> m b) -> m b

class (Prelude.Bind m) <= Monad m where
  return :: forall a. a -> m a
```

And then defining an instance:

```haskell
  instance monadMaybe :: Monad Maybe where
    return = Just
    (>>=) m f = maybe Nothing f m
    (<$>) fn (Just x) = Just (fn x)
    (<$>) _ _ = Nothing
```

Notice that we can define methods for any of the implied classes (i.e. Functor, Bind and Monad) :cactus: