Transaction-related methods are refactored with NVI pattern

The NonVirtual Interface (NVI) pattern is used to refactor Transaction-related methods.
It is necessary to implement some common logic on these methods, e.g. the recursive support, requested in the #127 issue.
The recursive transaction support is added

The issue #127 functionality is implemented here.
Merge pull request #260 from olegabr/feature-RecursiveTransaction-127

The recursive transaction functionality is implemented
Merge branch 'master' of github.com:olegabr/framework into feature-RecursiveTransaction-127
Merge pull request #269 from olegabr/feature-RecursiveTransaction-127

Updated this branch to the current master
Merge pull request #268 from qcubed/feature-RecursiveTransaction-127

Recursive transaction support is added