Unscaled glyphs

Calculate glyph dimensions in unscaled values, [prerequisite for shared glyph cache](https://github.com/mapnik/mapnik/pull/2265#issuecomment-45787416).

Refactors code handling [glyph advance precision](https://github.com/mapnik/mapnik/issues/2201) which was inaccurately referenced as glyph width before. Glyph advance rounding for backwards compatibility with Mapnik 2.x is handled in [exactly one spot now](https://github.com/mapnik/mapnik/blob/unscaled-glyphs/include/mapnik/text/glyph_info.hpp#L70-72) instead of [in the shaper](https://github.com/mapnik/mapnik/blob/e618a654985194a95f7cf9c8d48f82e2d1062057/include/mapnik/text/harfbuzz_shaper.hpp#L109) AND [in FreeType glyph loading](https://github.com/mapnik/mapnik/blob/e618a654985194a95f7cf9c8d48f82e2d1062057/src/text/face.cpp#L91-L94).

Font size is set to `font->units_per_EM` and glyphs are loaded without `FT_LOAD_NO_SCALE` to implement the method described at http://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_LOAD_XXX for rendering "tricky" fonts.

This [benchmark](https://github.com/mapnik/mapnik/blob/e618a654985194a95f7cf9c8d48f82e2d1062057/benchmark/run#L24-L31) should be run to determine how this affects performance.

/cc @artemp to double check float precision issues