Added rotation to bodies. Added base.transform.

Changelog:
 1. base.transform:
  - Utility 'static' module for useful transformation operations.
  - Inspired by Java's AffineTransform's beauty and wondrous curves.
  - For a list of TODO functions for transform see TODO section.
  - Supposed to have as much documentation as possible (since it's a
    tricky area with more math than usually).
  - Called statically, that is: base.transform.rotate(...).
 2. Rotation:
  - Uses base.transform.
  - base.transform.rotate:
   i. Accepts a body, anchor point (optional) and a draw function with its
   passing arguments.
   ii. Anchor points are, if not passed, the center of the given body's
   bounds.
   iii. Drawing is done by receiving a function and parameters and then
   calling it in between push and pop stack functions.
   iv. Will work on multiple draws later on.
   v. Optimized as much as possible.
  - Both selector's selection marks (body outlines) as well as characters
    are rotated at this time.
  - Bullets need not be rotated for now, since they're circles.

Issues and Bugs:
 - None.

TO DO:
 - List of base.transform possible functions:
  a. shear (hey, why not?)
  b. translate
  c. scale
  d. identity (just like AffineTransform)
  e. MOAR AWESONESS
- Make ALL bodies "subclasses" rotate.
- Body, by default, rotate?
- Multiple draw functions passed on base.transform.rotate.