maintenance

Firstly, this patch resolved some minor issues:

- fixed some minor mistakes in the documentation
- fixed several warnings such as sign conversions, weak vtables, etc.
- got rid of unused enum value `hm_timeout_msg`
- use 64bit integer for duration type, closes #9
- throw exception when trying to use a negative timeout for receiving messages

Secondly, this patch enforces a better and more C++11-ish coding style:

- use `noexcept` instead of `throw()`
- annotate fallthroughs in switch statements via `CPPA_ANNOTATE_FALLTHROUGH`
- prefer `enum class` over `enum`
- prefer exhaustive list of cases over relying on a `default:` case
- suppress third party warnings via `CPPA_PUSH_WARNINGS`/`CPPA_POP_WARNINGS`
- use `[[noreturn]]` whenever possible