Adding partial and tagged updates.
Adding state structure.
Starting to add more and better forking behaviour in streams.
Adding back the tests.
Adding stream.
Updating the documentation and cleaning the code around recursive taggedSum matching.
- Removed the need to test for a partial, just let the partial fall into the `else` statement.
- Updated the documentation to help understand what's going on.
Merge branch 'streams' of https://github.com/SimonRichardson/squishy-pants into streams

Conflicts:
	src/tagged.js
Re-working of Promise constructor. Promise is no longer a lazy evaluator of the deferred.
Instead it's called immediately so it's inline with expectations and also the stream type.
For example, if nobody is listening to the promise (fork) then previously it would not execute
the deferred, but now it does. If you want to have a lazy Promise wrap it up in a closure when
first requested it's executed.
Updating the test.js so we report stream async tests as the correct number of tests complete.
Moved tagged constructions tests to check.
Removed the Option from array, it becomes a massive hinderance - I may add it back though.
Starting to add state test using verbal expressions.
Removing some very dubious methods in array.js
Actually adding a better isNaN function instead of the rubbish native isNaN
Making sure we correctly test foldRight.
Pulled fix from lens upstream.
Removing foreach from array.
More changes to the stream file.
Fixing stream test, so it doesn't have timeout.
Adding the stream.