Consolidate Tx and RWTx

This pull request merges `Tx` and `RWTx` into a single `Tx` type. After using Bolt in a project I found that I was doing this application-side and it should really be library-side. There is now a method to check if the transaction is writable:

```go
func (*Tx) Writable() bool
```