Basic Implementation
work on #21
- Uses a particle emiter to shoot cool physics particles around. It's pretty sick.
- Reworks existing type casts to use `as` rather than c-style casts (works better with formatting software).
- Adds Projectile.Explode(), which allows for projectiles to be given an effect to create when they hit one of their targets.
- DamageSystem now uses OnCollisionEnter() rather than OnTriggerEnter() for detecting collisions so that we can use the collision info for placing the shrapnel effect in the world.
    - As a result, the colliders on the bullets are now no longer triggers, which has a number of implications since they are also physics objects. To deal with this, I have created the `Projectile` and the `Weapon` physics layers so that bullets will not collide with each other or the weapon that fired them.
First Pass Weapon Test Field
work on #23
- Added a WeaponSystem to the WeaponEffects scene. This still isn't quite an ideal system, but it works for now.
Shell Casings
work on #21
- Guns now eject shell casings when they fire.
- Made start method for Weapons virtual so that child classes can call parent's Start() method (the unity equivalent of chaining constructors).
Increase Shrapnel Collision Quality
- Woops, I reduced the collision quality and forgot to fix it -_-;