Move transaction commands to a separate module.
Add support for `#multi`, `#exec`, `#discard` commands.

The old way of `#multi` and `#exec` is not the exact
redis transaction commands. It just run every command after `multi`,
and save the result to buffer. Then when `#exec` is called, return
the buffer. So `#discard` couldn't work. (Actually it is not implemented)

The real `#multi` and `#exec` should be like this: save all the commands
after `#multi`, when `#exec` is called, run the commands saved. And if
`#discard` is called before `#exec`, client should forget all commands
after `#multi`, don't run any one of them.
In ruby 1.8.7, `instance_methods` returns string, not symbol.
Don't alias any transaction commands.
Move `write` method to CommandExecutor module.
Don't alias any methods, just re-write `write` command.
Merge pull request #86 from larrylv/transaction-commands-support

Transaction commands support