Doodad Prototyper Update
- Decoupled Doodad from its prototype management. Management is now
  handled by the class DoodadPrototyper.
  - The motivation for this is to prevent clients of Doodad from
    irresponsibly adding and removing prototypes. Many clients
    should only use pre-existing Doodad prototypes.
Robust BackgroundMap Update
- BackgroundMap objects now support operations and iterations over
  group of selected tiles inside given rectangle.
- BackgroundMap::getType() now returns a reference to the type
  instead of a copy. This is safe because it does not reveal
  implementation details and allows no more than what setType
  already provides.
- May have to encapsulate paintbrush behavior in separate class in
  order to allow for easy variation. As of this snapshot,
  paintbrush behavior is built into the BackgroundMap class.
Coordinates Conversion Refactor Update
- Abstracted coordinate conversion functionality from
  SimpleBackgroundMap and encapsulated it in CoordConverter, the
  first of the utility classes. This will allow other clients to
  reuse conversion functionality.
- Added default ctor for Doodad. Constructs a null Doodad. This
  will allow Doodad objects to be used in data structures like
  maps, which require a default ctor.
- Removed iostream module inclusion from SimpleBackgroundMap.
Doodad Map Update
- Added simple factory for BackgroundMap. Offers focal point for
  creating BackgroundMap objects, reducing dependency on specific
  implementation.
- Added DoodadMap abstract base class and SimpleDoodadMap
  implementation.
  - Applies Doodad objects to a background map. Wraps BackgroundMap
    functionality. Users of DoodadMap do not explicitly refer to a
    BackgroundMap object, except maybe in construction.
  - DoodadMap is not responsible for applying Doodad objects in a
    way that 'makes sense'. That logic is abstracted and handled in
    classes to be determined.