redefine Definition name with options hash

Give the option to redefine the attribute name that is sent to the object
being represented.

    class Article
      include Representable::JSON
      attr_accessor :title
      property :heading, :name => :title
    end

    a = Article.new; a.title = "Godzilla!"
    a.to_json # => '{"title" : "Godzilla!"}'
give option to supply a Proc to a Definition

Give the option to supply a Proc to a Defintion that acts on the object
being represented.

    class SensationalArticle
      include Representable::JSON
      attr_accessor :title
      property :title, :proc => Proc.new {|article| article.title + "!"}
      property :lede, :writeable => false, :proc => Proc.new { |article|
            "Experts are warning that " + article.title.downcase + "!!"
      }
    end

    a = SensationalArticle.new; a.title = "Bees Are Found To Make Honey"
    a.to_json # => '{"title" : "Bees Are Found to make Honey!",
              #      "lede"  : "Experts are warning that bees are
              #                 found to make honey!!}'
use the original name as the key in the doc

Use the original name as the key in the doc when :name is redifined.

    class Article
      include Representable::JSON
      attr_accessor :title
      property :heading, :name => :title # implicit :from => :heading
    end

    a = Article.new; a.title = "Godzilla!"
    a.to_json # => '{"heading" : "Godzilla!"}'
Merge branch 'proc_option'