JSR-356 - reworked Config to maintain user provided config

+ If a user provided config is supplied, then that config should
  be used for init(EndpointConfig) and other various accesses to
  the configuration object.  This refactor stops using an internal
  EndpointConfig object always and moves the internal config
  fields into the JsrSession object instead.
JSR-356 - cleaning up Decoder and Encoder lifecycle.