Refactor to optimize for multiple format() invocations

This simplifies the traversal of the internal message pattern structure that's parsed from a message string or a pre-parsed JSON object during initialization. It stores a representation of the message pattern that's optimized for to-stringing and is much better at handling repeated `format()` invocations.

Overall this refactor yields about a 3.5x – 4x increase in performance of `format()`, and it really shines with a 30x – 40x improvement when formatting a messages with a number or date while using the runtime's built-in `Intl` objects.

### TODOs

- [ ] Update unit tests
- [ ] Update docs
- [ ] Figure out how to handle offset?