Interface common to all assets.
An asset is a resource that is used by the game - a texture, sound, block definition and the like. These are typically loaded from a module, although they can also be created at runtime. Each asset is identified by a URI that uniquely identifies it and can be used to obtain it. This uri provides a lightweight way to serialize a reference to an Asset.
Assets are created from a specific type of asset data - this allows for implementation specific assets (e.g. OpenAL sounds or Null sounds if the NullSoundManager is in use).
Assets may be reloaded by providing a new batch of data, or disposed to free resources - disposed assets may no longer be used until reloaded.
@author Immortius