Doing a Get request on an incomplete key is what results in the datastore error "datastore: internal error: server returned the wrong number of entities"  Having goon check for these
error conditions saves an RPC request.

getStructKey needs to return an incomplete key for Put requests, so instead added a parameter to extractKeys in order to determine if incomplete keys were okay or not.

Fixed #8, getStructKey(src) throws an error if it's a String ID object and the Id is not populated.  Since an incomplete key Put to the datastore results in an int64 Id, having a
String Id be blank is never helpful.

added more unit tests which is where these errors were caught

Conflicts:
	goon.go
	goon_test.go
Added support to Goon for users to set timeout values for Memcache and Datastore

At the moment, those values are only respected in GetMulti()

GetMulti() will now return the first set of values it can find while only making a Datastore request if the memcache request exceeds it's timeout value or fails to fetch all data

Added a test that has almost 100% coverage of the new code, however there's a race condition in that for one case, the Datastore request literally needs to timeout

This starts work on #15 but there's more to do
Revert "Added support to Goon for users to set timeout values for Memcache and Datastore"

This reverts commit 6609dfd3f3ec6e5a8578db189c1cf8be298f75c8.
forgot this piece of code somehow

As mentioned in commit a0fb89e8d950f972170506508c2bbadf815c0708 getStructKey(src) can be used to enforce that a string Id object always has an Id set -- there's no purpose for a string
Id object to be "incomplete" as the datastore won't assign a random string value.
Merge pull request #16 from mzimmerman/fixes

Detect some incomplete key error conditions before the RPC request is issued
Merge remote-tracking branch 'remotes/upstream/master'

Conflicts:
	goon_test.go