Clarify docs for base option

The base option requires a trailing slash for getAssetKey to return the correct value (as written).  Alternately getAssetKey could be modified to remove the leading / from the adjusted path if present.
Async tasks

Upload and remove are asynchronous tasks and need to indicate this to
grunt via the use of this.async() in the task method.
ensure watch target passes expected callback function
Merge pull request #8 from mapsherpa/master

Clarify README, update tasks to be async.