def at(column)
      case column
        when Symbol  then at_accessor(column)
        when String  then at_header(column)
        when Integer then at_index(column)
        when Range   then @data[column]
        else raise InvalidColumnSpecifier, "Invalid index type, expected Symbol, String or Integer, but got #{column.class}"
      end
    end
def at(column)
      case column
        when Symbol  then at_accessor(column)
        when String  then at_header(column)
        when Integer then at_index(column)
        when Range   then @data[column]
        else raise InvalidColumnSpecifier, "Invalid index type, expected Symbol, String or Integer, but got #{column.class}"
      end
    end
Access a single cell by either index, index-range, accessor or header-name.

 @example
     table = Tabledata.table header: %w[x y z], body: [[:a,:b,:c]], accessors: %i[foo bar baz]
     row   = table.row(1)
     row.at(0)    # => :a
     row.at(:foo) # => :a
     row.at("x")  # => :a