Faster font i/o backported to 2.3.x - refs #2282

@artemp - finally had a chance to backport the faster font reading to 2.3.x.

Will test on windows next. In the meantime - this look good to you (the code changes)?

Benchmarks show sweet improvement:

Before (2.3.x using libc++):

```sh
$ ./benchmark/out/test_face_ptr_creation --threads 10 --iterations 10
font_engine: creating 220000 faces:        t:10 i:10         1630 milliseconds
$ ./benchmark/out/test_face_ptr_creation --threads 1 --iterations 100
font_engine: creating 220000 faces:        t:1 i:100          240 milliseconds
$ ./benchmark/out/test_font_registration --threads 10 --iterations 10
font registration:                         t:10 i:10          710 milliseconds
$ ./benchmark/out/test_font_registration --threads 1 --iterations 100
font registration:                         t:1 i:100          630 milliseconds
```

After:

```sh
$ ./benchmark/out/test_face_ptr_creation --threads 10 --iterations 10
font_engine: creating 220000 faces:        t:10 i:10          310 milliseconds
$ ./benchmark/out/test_face_ptr_creation --threads 1 --iterations 100
font_engine: creating 220000 faces:        t:1 i:100          100 milliseconds
$ ./benchmark/out/test_font_registration --threads 10 --iterations 10
font registration:                         t:10 i:10          220 milliseconds
$ ./benchmark/out/test_font_registration --threads 1 --iterations 100
font registration:                         t:1 i:100          200 milliseconds
```