Fixed #22634 -- Changed Session and SessionStore to be easily extendable

Introduced abstract base model for Session, and properties enabling
the developer to override session model class used by session store
and the session store class used by the model.