Use double brace initializers to support Clang

According to http://stackoverflow.com/questions/16985687/brace-elision-in-stdarray-initialization ,
brace elision is fine for these expressions, but Clang is currently
incorrectly rejecting such code. Adding an extra brace is not a pain,
so let's just do that.
Clang/Mac/iOS: Explicitly cast+include

* error.cpp uses std::string, so include it
* don't assume sizeof(int)==sizeof(size_t). Cast to be explicit that we're
  potentially downcasting.
timed_section: get_time impl for mac/iOS

These platforms don't have clock_gettime.
timed_section: Don't use realtime clock!

For timing, CLOCK_REALTIME must be used, because system clock might
change in the middle of execution.