Bring the Session class back

* Re-implement the Session class follow the Client abstract and
  ClientFactory.

Signed-off-by: Neutron Soutmun <neo.neutron@gmail.com>