Add service layer

- Consolidates business logic and data access into a single core project
- Data objects will eventually be defined entirely by the core project,
when canvas-specific functionality moved into the GUI projects
- The system can be accessed programmatically by the singleton data
managers, which are obtainable via the global Minimap class
- The system can also be accessed remotely through the Web API, which
can be controlled and monitored programmatically via the WebAPIServer
class
- The GUI is still using the old server at this time, but can use the
service layer once a strategy for casting core data types to drawable
data types has been implemented