OBJ_LOADER_DEMO: Give forward vertex shader its own constants

While it's perfectly fine to share with gbuffer shader, since they're never used
at the same time, it was confusing to see the c++ shader definition with no
cbuffers, yet the hlsl clearly has a cbuffer.
OBJ_LOADER_DEMO: Rename function to better describe what it's for
DOCUMENTATION: Clarify how ModelInstanceThreshold works
COMMON: Remove unused struct
COMMON: Split Model class into two types

The Model class doesn't internally store an instance buffer, but instead assumes
the user will handle instancing another way.
The InstancedModel class inherits from Model and DOES store an instance buffer.

Also adds a ton of documentation for the class
COMMON: Remove instance data from the HMF format

Instance data should be stored in the scene, not with the model.
OBJ_LOADER_DEMO: Fix the gbuffer names
OBJ_LOADER_DEMO: Implement scene modelInstanceThreshold
OBJ_LOADER_DEMO: Update the models to HMF version 2
COMMON: Guarantee that we're not using an old file version
OBJ_LOADER_DEMO: Implement geometry instancing for forward shading

Directly inspired by http://www.slideshare.net/DICEStudio/directx-11-rendering-in-battlefield-3
slide 30. The idea is to break any instance data you have into float4's. Then all instance data for the frame
is stored in a giant buffer. This removes the need for individual instance buffers for each model
that needs to be instanced as well as allows for other types of instance data (skinning etc.)
DOCUMENTATION: Add a discussion of comments in json