Fixes #199

Fixes #199

Summary:
- extracted default options and logics for validation and modernization into options module
- extracted logics for building internal servers (mqtt, mqtts, http, https) into interfaces module
- server internally uses modernized options
- if `interfaces` is not present in options, it's constructed from legacy keys, otherwise left as is
- if `credentials` is not present in options, it's constructed from `secure`, otherwise left as is
- all conserved options keys are shallow copied
well, it does (kind of). You are creating the http server, and you need to add hooks for websockets.