I18n support

- UsageError split into more specific exceptions with parameters. It will enable projects using Clamp to catch such exceptions and print their own translated strings.
- Heading in HelpBuilder extracted to a function to make overriding easier.