Use single timer approach, add cache tables and load/deletion-callbacks as well as a bunch of convenient helpers.

I figured it'd be nicer to have a single timer control the cache expiration instead of starting a new one for each item. I've also added optional callback methods which are triggered right before an item gets removed or created. Finally, I've streamlined support for multiple cache2go caches in a project by introducing cache tables.

Here's a little change list:

- A bunch of typo fixes
- Items allow setting of an "aboutToExpire" callback function
- Added support for cache tables:
 foobar := cache2go.Cache("foobarCache")
 foobar.Cache(foobarKey, 60 * time.Second, foobarValue)
 entry, err := foobar.Value(foobarKey)
- "CacheTable.Count() int" returns the amount of items in a cache table
- Introduced single (per cache table) self-adjusting timer which triggers an expiration check
- Added CacheTable.Delete(key) and .Exists(key) methods
- Table-wide creation/deletion callback functions
- Table-wide data-loader callback function, allows for on-demand loading of cache items
- Merged expiring and non-expiring caches. To create a non-expiring cache item:
 foobar := cache2go.Cache("foobarCache")
 foobar.Cache(foobarKey, 0, foobarValue)

Let me know what you think! :-)