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