Added reference counting for uniforms.

Uniforms are now automatically destoryed when no program references them.
CreateGlobalUniform adds a virtual user for the uniform to prevent it from
being destroyed. These need to be deleted manually when appropriate (by
decreasing the reference count).

Added more log message functions: Trace, Debug, Warning.
  log::Trace prints only if TRACE_ has been defined, otherwise it is an empty
  function call.
  log::Debug prints only if DEBUG_ has been defined, otherwise it is an empty
  function call.

Added ROB_WARN macro to Assert.h for warnings in debug mode. Example:
ROB_WARN(x == 0); // logs "Warning: x == 0 in <file>:<line>" if x == 0.