Generalise Nondeterminism gather to use Reducers

Previously we were reducing to a `List` - `aggregateCommutative` would
then `foldMap` the `List` to a final result. We should be able to skip
the generation of the intermediate list, if that's not what we want.
Override `reduceUnordered` in `Future` and `Task`

Allows more general reductions.
Remove calls to `implicitly[Reducer[A, M]]`

Already have the evidence available.
Add `reduceUnordered` to scalaz.concurrent.Future
Change tests to reduce to Set rather than gather

Previously `Future` and `Task` tests were gathering to a `List` and then
converting the list to a `Set` - this now tests the generalised
`reduceUnordered` method, which will remove the intermediate lists.
Make `FutureTest` not rely on result ordering

This test should probably instead be deleted.
Remove problematic case from `FutureTest`
Add test for timed Future

This really should not be a test and should instead be a benchmark. We
shouldn't be able to observe what this test is asserting.

scalaz currently does not provide any sort of benchmarking tools. We'll
use this test for now but its utility is very debatable.
separate Yoneda and Coyoneda
add Coyoneda instances
CoyonedaTest
Added whenM, untilM, and forever monadic combinators
Detailed example of Writer usage.
removed comments from Scala worksheet.
Add Const functor and const function

`const` function inspired by Runar's
[A Proper Constant Function in Scala](http://apocalisp.wordpress.com/2010/04/21/a-proper-constant-function-in-scala/)
blog post.
removed string interpolation
removed usage of foreach/ Each
adding sequencef to foldable, sequence specialized on free
Merge pull request #650 from puffnfresh/nondeterminism-reducer

Generalise Nondeterminism gather to use Reducers
Add common instances for LiftIO and MonadIO
s/7.0.5/7.0.6