def type(name, &block)
      t = IndexType.new(self, name)
      block ? block.call(t) : t
    end
def type(name, &block)
      t = IndexType.new(self, name)
      block ? block.call(t) : t
    end
Returns a Stretcher::IndexType object for the type +name+.
 Optionally takes a block, which will be passed a single arg with the Index obj
 The block syntax returns the evaluated value of the block

    my_index.index(:foo) # => #<Stretcher::Index ...>
    my_index.index(:foo) {|idx| 1+1} # => 2