Canfield-Staging-2 -> production: Graphics system updates

Graphics:
- Network tanks now disappear when Tank.isHidden returns true (nice work by Aaron with implementing Tank.isHidden in #306)
- The local tank is now drawn at 60% transparency when Tank.isHidden returns true
- A background layer is now drawn behind everything. This currently uses the grass texture.
- Renamed Sprite.isEntityDisposed to Sprite.isDisposed, since this may or may not be delegated to an Entity, depending on the sprite type
- Wildcard isn't needed for sprites anymore: Use plain Sprite instead of Sprite<?> now
- Added AbstractEntitySprite<? extends Entity>, which extends Sprite and is used by Entity-observing sprites. Non-entity sprites inherit directly from Sprite. This further clarifies that sprites don't need to observe an entity.
- Sprites can now set their color tint and transparency
- Renamed DrawLayer layer names to reflect their draw order (FIRST, SECOND, ..., TOP). This makes it easy to understand the draw order without needing to look at the Graphics.draw code.
- Fixed clipping bug (data for twice as many sprites as needed was being sent to the graphics card)
- Fixed bug that prevented the camera controller from being attached to the tank sprite if the tank's starting x position was greater than two times the camera width

Network:
- NetworkObservers, which are local subsystems that implement the NetworkObserver interface, can now subscribe to receive notifications from the network when certain events occur (player connected, player disconnected, game started, message received). See the NetClientTestApplication and NetServerTestApplication for examples of how this allows user interface systems to subscribe to these events without requiring the network to know anything about them (aside from that they implement the NetworkObserver interface).
- Player names are now sent across the network when they connect, and all players are notified that they joined
- Clients receive the server name when they connect ("ChrisClient connected to game. The host is ChrisServer.")

Misc
- Added more than 27 unit tests
- Removed outdated TODOs; Fixed comment typos
- Removed broken hp methods from Actor, since these clashed with the tank's new methods from #309. Tank appeared to have multiple ways to get and set health, but only one way worked. Also removed it from StationaryEntities, since those also didn't work and weren't backed by variables, and since their name clashed with the methods in tanks. Once health is added to additional Entities, similar, working methods can be added back, with names that match those in tank (or the names in tank can be changed - but they should use the same names).
<br><br>
The network integration tests have changed a bit: They now both prompt for a name first. A previous update also added a start game pop-up box to the server player. Since this is Swing, it tends to end up behind the LWJGL window - so try minimizing that window if you can't find the popup.

Resolves or partially resolves #305, #259, #250