AssetCache update

Updates the Arpk::AssetCache to have a more correct runtime.  Assets now
added to the cache are wrapped into a Arpk::AssetCache::Reference
object, which internally tracks timestamps and manages the
Asset#update() calls.  This should ensure that each time an asset is
updated, it is give the best approximation of the number of milliseconds
elapsed since its last invocation.

Note:  the first invocation will always receive 0ms.