What are the differences between the transaction and block versions? (v1, v2, v3, etc..) If I run command to fetch a block, I see version 2 is returned:

getblock 0000000000000000ae22455f90306f43e8c806585fe2dfc3b0e92ac7b7620bff


Output

{
"hash" : "0000000000000000ae22455f90306f43e8c806585fe2dfc3b0e92ac7b7620bff",
"confirmations" : 5885,
"size" : 249065,
"height" : 280557,
"version" : 2,
"merkleroot" : "5b4c401a2ad5a82ef26efb1d7ad82a0b6abea18118b50a12b555ea9e8663042b",
"tx" : [    .... snip ...


and when I run the command to fetch a transaction, I see that version 1 is returned

 getrawtransaction 260ef6a9bbb401ecbfdace19c84ae3245f0ab5b229ea716209a38e9ec0fd14c1 1


output 

{
"hex" : "01000000027f4e827503d7d52617.. snip ..9763caaf4b6216343fa460b88ac00000000",
"txid" : "260ef6a9bbb401ecbfdace19c84ae3245f0ab5b229ea716209a38e9ec0fd14c1",
"version" : 1,
"locktime" : 0,
"vin" : [


Question

I read somewhere that BIP32 will cause both of them to be version 3.  Can anyone explain: 


Where I can find a concise list of rules of what is expected from each version (it's not on the wiki)
When that version changed (year and/or block number)
Are old version banned, or are they still supported?
BIP0034 added Version 2 blocks.  It enforces the rule that the transaction version is 1 (this was previously not enforced and there are some weird transaction versions in the block chain).  It also requires the coinbase transaction input script to contain the block height as the first data element.

There has been discussion about a new Version 3 block and Version 3 transaction which would enforce canonical encoding.  This would be a solution to the transaction malleability problem.  Skipping transaction Version 2 would make the versions the same once more for both blocks and transactions.

You can read the Bitcoin Improvement Proposals here.