Merge branch 'utility_grid' of https://github.com/OpenGameDevelopers/ZED into window_manager
Merge branch 'unstable' of https://github.com/OpenGameDevelopers/ZED into window_manager
Merge branch 'arithmetic' of https://github.com/OpenGameDevelopers/ZED into utility_grid
Merge branch 'unstable' of https://github.com/OpenGameDevelopers/ZED into window_manager
|SOURCE|
[Common::System::File]
* Added File class which will handle opening, reading, writing, and navigating
  files
[Common::System::NativeFile]
* Added NativeFile which will access a file from storage like any other file,
  without any meta data
[Linux::System::NativeFile]
* Open
  * Uses the flags for the Access type to determine how to construct the mode
    parameter for fopen
  * Returns ZED_OK if the file was successfully opened or ZED_FAIL if it could
    not be opened
  * More specific information about any possible failures is printed to the
    terminal
* Close
  * Checks if the file is open, if it is then it is closed
* ReadByte
  * Reads in the specified amount of bytes to the data pointer passed in to the
    member function
  * Returns ZED_FAIL if the length read does not match what was requested
|SOURCE|
[Common::Utility::FreeCamera]
* Added UpdateOrbitLocation, which is intended to position the target location
  relative to the camera's position
|SOURCE|
[Linux::Arithmetic::Matrix3x3]
* Rotate [Quaternion] member function should generate a rotation matrix from a
  quaternion (pending testing)
|MERGE|
arithmetic_matrix into utility_camera
|SOURCE|
[Linux::Arithmetic::Matrix4x4]
* The constructor via Quaternion should correctly create a rotation matrix from
  the Quaternion passed in
|MERGE|
arithmetic_matrix into utility_camera
|SOURCE|
[Common::Utility::Camera]
* All accessor member functions prefixed with Get
* All manipulator member functions prefixed with Set
* Using Quaternions for handling rotation
* Added pure virtual member function Update
* Added RecalculateAces, which recalculates the local up, right, and heading
  vectors
* Added a few debug messsages to help with the new method of positioning and
  rotating the camera
[Common::Utility::FreeCamera]
* Rotate (angle + axis) creates an incremental rotation for a rotation
  Quaternion
* Move uses the local right, up, and direction vectors to calculate the new
  elocity for the position vector
* Update rotates the position by the rotation matrix derived from the right,
  up, and heading vectors, then calls SetView3D with the right, up, direction,
  and new position vectors
|MERGE|
utility_camera into utility_grid
|SOURCE|
[Common::Utility::Grid]
* Initialise handles creating grids on a YZ plane and offsets it on the X axis,
  accordingly
|MERGE|
utility_grid into unstable
|SOURCE|
[Common::Utility::Camera]
* All references to the renderer member variable are guarded by #if defined
  ZED_BUILD_DEBUG to ensure that only the debug builds refer to the renderer
|MERGE|
utility_camera into unstable
|SOURCE|
[Common::Utility::FreeCamera]
* Update correctly positions the camera with the right, up, and direction axes
|SOURCE|
[Common::Utility::FreeCamera]
* Reversed the direction vector in Update to correctly orientate the camera
  (the objects in the world seemed to be getting rotated as if the camera were
  orbiting them, rather than they orbit the camera)
|SOURCE|
[Common::Utility::Camera]
* Commented out debug messages which could be useful in the future (possibly
  add some kind of boolean value to toggle them?)
[Common::Utility::FreeCamera]
* Removed useless debug message for position in Update
|SOURCE|
[Common::Utility::Camera]
* Added a copy constructor which only copies the orientation and position of
  the camera, not taking along the projection or view
* Added an assignment operator, which, like the copy contructor, only copies
  the orientation and postion of the camera being duplicated
* SetOrientation takes in a Quaternion representing the orientation of the
  camera and sets the current camera's orientation accordingly
* GetOrientation returns the orientation of the current camera as a Quaternion
[Common::Utility::FreeCamera]
* Removed redundant member functions and variables
* The orbit was not necessary when the new calculation of the orientation was
  implemented
* The Euler-based Rotate is largely useless as it's just simpler to represent
  the change in orientation as an angle-axis pair