made vec3 templated, to quickly enable integer 3d math; vec3f (and vec3 for compatibility) are floating point, vec3i is integer. added std::hash<vec3i> specification, with a simple hash function that seems to work well when all componenets are small enough