Support replicas in a slice

Currently, only RAID 0+1 like fragile cluster is supported.
For safety, each slice in slices should be replicable, like RAID 1+0.
(However, top-level replicas must be there even if RAID 1+0 like structure is supported, because it is useful to migrate an existing slice to new one.)

See also: http://itpro.nikkeibp.co.jp/article/Watcher/20060518/238330/

By this pull request, now there are 3 type volumes:

 1. SingleVolume, is a physical computer.
 2. SlicesVolume, is a collection of <Slice>s.
 2. ReplicasVolume, is a collection of volumes.

A Slice must have one of volumes.
For example:

~~~
  datasets:{
    Default:{
     replicas:[
       {
         slices:[
           { volume: { address:... } },
           {
             volume: {
               replicas: [
                 { address: ... },
                 { address: ... }
               ]
             }
           },
           {
             volume: {
               slices: [
                 { volume: { address:... } },
                 { volume: { address:... } },
                 {
                   volume: {
                     replicas: [
                       { address:... },
                       { address:... }
                     ]
                   }
                }
              ]
            }
          }
        ]
      }
    ]
  }}
~~~

It will be parsed as:

~~~
  ReplicasVolume:[
    Slices:[
      Slice:SingleVolume,
      Slice:ReplicasVolume:[
        SingleVolume,
        SingleVolume
      ],
      Slice:SlicesVolume:[
        Slice:SingleVolume,
        Slice:SingleVolume,
        Slice:ReplicasVolume:[
          SingleVolume,
          SingleVolume
        ]
      ]
    ]
  ]
~~~

Note, currently the top level ReplicasVolume is the Dataset itself.
It is dangerous, so we should change the structure like:

~~~
  datasets:{
    Default:{
      volume:{
        replicas:[...]
      }
    }
  }
~~~

This breaks backward compatibility - v2 catalogs have to be migrated when they are parsed.
So, after the change, catalog's spec version must be incremented to 3.

引数はdataじゃなくてvolumsにしませんか？
`data["replicas"]`のパースはこいつの仕事じゃなくて呼び出す人の仕事じゃないですかねぃ。