osd: Transaction use different iterator for different encode

When use_tbl is true, the tbl_iterator is used, while when use_tbl is
false the map_iterator is used.

A new class iterator_impl is used to hide the details of iterator.

Change-Id: I4d66de6de78c06572f0642f1d34aab6cfe699e75
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
osd: finshed Transaction::append and Transaction::swap

Also fix two small bugs
  1. add op_buffer_ptr_offset to encode/decode
  2. free op_buffer when Transaction destoried

Change-Id: I0c57cf656e15b5d28b9ea1daf200c0f02aa9c22a
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
osd: remove encode/decode for Transaction::tbl

We don't need these encode actions any more.

Change-Id: I1ec2ff25a651f52cfcf0f29fc1f011701b80e9a9
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>