BUG-2459: centralize codec allocation

This moves EXI codec allocation into AbstractNetconfSession, so it is
can be standardized for both client and server.

Change-Id: I304bec5e19efaa6c3ff63ac66f2bd0d9c55c6b7a
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-2459: cache GrammarCache

The GrammarCache without a schema is used as a template, so it is
expliticly okay to reuse it across multiple instances. Make sure we
reuse it as much as possible.

Change-Id: I0e642b1b580051e997de9602020ab0dace7dbcac
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-2459: maintain a cache of grammar caches

This just reuses instances across multiple sessions, since the
cardinality is usually low.

Change-Id: Icd18348eee51295f50e224572c103e3b5572963b
Signed-off-by: Robert Varga <rovarga@cisco.com>
Merge changes Icd18348e,I0e642b1b,I304bec5e

* changes:
  BUG-2459: maintain a cache of grammar caches
  BUG-2459: cache GrammarCache
  BUG-2459: centralize codec allocation