Make transactions nestable.

At the moment, rx.transaction buffering is controlled by a global boolean. As a result, nested calls to rx.transaction do not work as expected (the first one to complete sets buffering off and immediately applies the whole queue). This change switches rx.transaction to using a nest count instead of a flag. Only the outermost call applies the buffer.