added a Task.start method to start the future right away
Add "lossless" tags

New type is `@@@` - which is defined to be:

    type Tagged[T] = {type Tag = T}
    type @@@[+T, Tag] = Tagged[Tag]

Usage is:

    scala> Tags.MinVal.unwrap(Tags.MinVal.lossless(1) |+|
    Tags.MinVal.lossless(2))
    res0: Int = 1

    scala> Tags.MinVal.lossless(1) * Tags.MinVal.lossless(2)
    <console>:14: error: value * is not a member of
    scalaz.@@@[Int,scalaz.Tags.MinVal]
                  Tags.MinVal.lossless(1) * Tags.MinVal.lossless(2)
                                                        ^
Make `Tagged` private

Gives a tiny amount of safety - nobody should be using this directly.
LosslessTagged
Only have 2 asInstanceOf calls for lossless tags
More in-depth ScalaDoc for `\/`
Add documentation to ==>>

I had never used `==>>`, so I thought it would be nice to start looking
through its source, adding ScalaDoc comments as I went along.

This is  how far I got before I thought to check how many lines
were in the file. Adding documentation for the rest is a bit of a
daunting task, but I figured I might as well contribute what I had
already done.

:-\
Delete freeEqual
Make Gosub constructor private

Exposing these allow us to observe differences because of the reified
bind/flatMap, which then break the monad laws.
add Cofree.delay
Add Maybe (alternative to Option)
Use normal case classes for Empty and Just
Add Option <~> Maybe
Update Maybe ScalaDoc

Note about jumping through Scala hoops removed since the Just and Empty
case classes are now exposed
Add toMaybe syntax for Option
Add some Maybe methods
Add Maybe syntax

Ex: 1.just
Move Empty and Just declarations into Maybe object

Per contributor guidelines for data structure name-spacing
add a MaybeT, this is basically just a direct translation of OptionT
Add toThese to disjunction