Audio: create AudioFile, AudioSource, Asset, Environment, AudioElement
AudioFile, AudioSource: clean up
Audio: rename private member variables to have more meaningful names
Audio: Wave files now play - fix AudioSource constructor
Merge pull request #7 from palistov/develop

Vector2D features
Asset: add virtual modifier to Load() and LoadAsync() signature
AudioFile: remove wav-specific logic
AudioSource: remove AudioFile member; Add IsPlaying property field
WavFile: creation and implementation
OggFile: creation
AudioSource: use property fields for sound properties
Environment: use property fields for listener properties
Assets: inherit from the correct Object class
Merge pull request #8 from jgcoded/audio

Audio Additions
Work on ToString methods, Object class inheritance

All classes inherit Object and many will implement their own ToString
method. For example, Vector2D.ToString will print the vector's name,
which is "Vector2D" by default, followed by the x and y components in
a formatted string. Objects like PhysicsWorld can also be named, and
should appear as "PhysicsWorld.MyPhysicsWorld" when ToString is called.
If the object doesn't have a name, it should just appear as "PhysicsWorld"
instead of an empty string, so that we can still enforce unique names
in a parent object. This way we can create a game system out of
components that share a name, such as Test0: they will be prefixed with
their type to prevent conflicts, i.e. "PhysicsWorld.Test0",
"Environment.Test0", "InputHandler.Test0", etc.

Still need to work on cleanly implementing the above behavior, handling
both empty and non-empty name strings. Many objects still default to
their class name when calling the base constructor.