Made GetMulti() fetch requests in its own goroutine to speed up requests that are over the GetMulti limit in the datastore

TODO: PutMulti & DeleteMulti
Fixing a number of errors in my implementation pointed out by @xStrom and @mjibson
finished the concurrency work on PutMulti and DeleteMulti
Additionally added the feature where PutMulti will return an appengine.MultiError if it was only able to partially write the results
Merge branch 'master' of https://github.com/mjibson/goon into concurrentmulti

Conflicts:
	goon.go
moving putMemory in PutMulti to be called on an individual struct basis which makes it possible to do so inside the goroutine that does the put call
making putMemcache more idiomatic go code and fixing bug
Updating Get/Put/Delete Multi so that all errors are returned in a MultiError so no operations (and errors) are swallowed
This does mean that none of those methods can return general appengine errors for having a service disabled or being over quota which may cause the end user to retry operations that
they should know will fail.  The raw error is still logged however and returned inside the MultiError
Merge branch 'master' of https://github.com/mjibson/goon into concurrentmulti

Conflicts:
	goon.go
If MultiError in Get/Put/DeleteMulti contains the same type entry on each index, return the single error
If MultiError in Get/Put/DeleteMulti contains the same type entry on each index, return the single error
The single transactions of the datastore never return MultiError of length 1
Merge branch 'concurrentmulti' of github.com:mzimmerman/goon into concurrentmulti

Conflicts:
	goon.go
Merge branch 'master' of https://github.com/mjibson/goon into concurrentmulti
Merge branch 'master' of https://github.com/mjibson/goon into concurrentmulti

Conflicts:
	goon.go
Merge branch 'master' of https://github.com/mjibson/goon into concurrentmulti
Merge branch 'master' of https://github.com/mjibson/goon into concurrentmulti

Conflicts:
	goon.go
Added test cases to cover 396 different situations.
Added proper support for *[]S, *[]*S, *[]I, []S, []*S, []I, in GetMulti.
Automagically retry Put requests that fail on a Timeout error
This retries all Put requests, not just complete keys
Revert "Automagically retry Put requests that fail on a Timeout error"

This reverts commit 9f2745ea952f63dd6e127ba406ce93dfb802288d.
Adjusted some query tests to use the new []S support in GetMulti.
Merge pull request #20 from mzimmerman/concurrentmulti

Speed up Multi requests with concurrency that are over the datastore limit