Add camera clamping, which fixes part of issue #13

Also, restructured the Camera class to have setters, instance vars
are now all private.