More universal cart classes (rebased from master)

Another  implementation of SessionCart, fixed checkout process