Handle body streams

@macdrevx @jnjosh Please review.

Turns out you can actually convert an NSURLRequest's HTTPBodyStream into an NSData object
by making a mutable copy of the URL request and then reading its stream as normal. We now
do this inside UMKMockHTTPRequest to fetch the body of a request and do normal comparisons.

This pull request also adds the ability to turn off body checking, and adds some convenience
classes/functions for testing sessions and generating random errors.
`waitUntilDate:` unlocks the condition variable and waits until the condition is signaled (or broadcast). When it is signaled, it reacquires the lock before returning from `waitUntilDate:`.

Because of the nature of conditions, they might sometimes receive spurious signals. To work around this, you’re supposed to use conditions with a corresponding boolean predicate that checks to see if the thing you’re waiting for is actually complete. 

So basically, this first checks to see if we should wait, and if we should, we do. Whenever we wake up, we check to see if we need to wait again and stop waiting when it’s no longer necessary. Then we release the lock and stop blocking the thread.