Adding scrolling camera support to the TileEngine

This change resolves feature request #17.

The change introduces a Camera object, which is designed to follow the
player when the map is too large to fit the screen on at least one
dimension. The camera is clamped so that it never reveals areas that are
outside the map's edges when it scrolls.

The camera also creates a scissor box around its view bounds to prevent
elements from drawing outside of the camera's bounds. This prevents
parts of the map from being drawn behind GUI elements (e.g. the tile
engine's shortcut bar) where the player cannot see them.

TileEngine now delegates all view offset and centering work to its
camera instance, and the call to GraphicsUtil::setOffset is replaced
with a call to camera.apply(). The resetOffset call is similarly
replaced by camera.reset() in order to clean up the transformations that
the camera performed.

Some maintenance updates:
* Updated the GraphicsUtil offset code to be more clearly named and
documented.
* Fixed up the naming of the include guard in Size.h.
* Added notes about usage of the Tiled Map Editor in the README.

Finally, in order to test the new camera, updated the Sereia Outside map
to be a fair bit wider. Also spruced up the decor in the town so that
it's just a little less sparse and boring. :)