Checkpoint on the base_object rotation fix... refactored rotatable.

Issue @B6 : Refactored rotatable and made changes to the existing
methods to allow lazy recalculation and to better ensure rotatable
is used properly. Need to finish the new rotatable methods before
starting the unit test.