Move most of TreeNodeBuilder#build to hash
Move most of TreeNodeBuilder#build to hash

Large case statements like this require invoking the `===` method, which
in some cases can invoke Draper's `===` on presenters, which isn't very
cheap since it is coded like this:

    def ===(other)
      super || (other.respond_to?(:object) && super(other.object))
    end

The `respond_to?` call is very heavy weight, as it ends up calling
`ActiveModel::AttributeMethods#respond_to?` a bunch and dives deep in to
the model structure.  Also, it is the equivalent of an `if`/`else`,
meaning it does a comparison against the objects it won't even be using.

Since this is just syntactic sugar for saying "is this object part an
instance of this class", doing a hash lookup speeds up this process
significantly, and there is hardly a change in how the code looks.  The
biggest change is in the build method that does the lookup:

    def build
      instance_exec &BUILD_NODE_HASH[object.class]

In which the proc defined in the `BUILD_NODE_HASH` is executed within
the context of the current instance.

Decorators that might be passed in as `object` in the `#build` method
are also handled on class load.  Each key in the BUILD_NODE_HASH is
looped through to check and see if a corresponding decorator is defined
for it.  If it is, the key is added to the hash, and is mapped to the
model's node proc.

jameswnl/manageiq,ilackarms/manageiq,borod108/manageiq,hstastna/manageiq,fbladilo/manageiq,gmcculloug/manageiq,djberg96/manageiq,jrafanie/manageiq,tinaafitz/manageiq,agrare/manageiq,hstastna/manageiq,juliancheal/manageiq,pkomanek/manageiq,mresti/manageiq,ailisp/manageiq,djberg96/manageiq,jameswnl/manageiq,branic/manageiq,juliancheal/manageiq,jrafanie/manageiq,juliancheal/manageiq,jvlcek/manageiq,israel-hdez/manageiq,yaacov/manageiq,romanblanco/manageiq,lpichler/manageiq,mzazrivec/manageiq,branic/manageiq,andyvesel/manageiq,tzumainn/manageiq,durandom/manageiq,chessbyte/manageiq,NickLaMuro/manageiq,aufi/manageiq,syncrou/manageiq,jntullo/manageiq,mfeifer/manageiq,lpichler/manageiq,tinaafitz/manageiq,agrare/manageiq,skateman/manageiq,d-m-u/manageiq,mresti/manageiq,lpichler/manageiq,d-m-u/manageiq,andyvesel/manageiq,aufi/manageiq,NaNi-Z/manageiq,fbladilo/manageiq,billfitzgerald0120/manageiq,NickLaMuro/manageiq,mresti/manageiq,kbrock/manageiq,durandom/manageiq,mzazrivec/manageiq,hstastna/manageiq,romanblanco/manageiq,NickLaMuro/manageiq,tzumainn/manageiq,kbrock/manageiq,ailisp/manageiq,josejulio/manageiq,jameswnl/manageiq,mkanoor/manageiq,jrafanie/manageiq,tzumainn/manageiq,branic/manageiq,yaacov/manageiq,borod108/manageiq,gmcculloug/manageiq,gmcculloug/manageiq,gerikis/manageiq,agrare/manageiq,jvlcek/manageiq,tzumainn/manageiq,mzazrivec/manageiq,jvlcek/manageiq,jntullo/manageiq,mfeifer/manageiq,ilackarms/manageiq,israel-hdez/manageiq,mresti/manageiq,djberg96/manageiq,ManageIQ/manageiq,jameswnl/manageiq,israel-hdez/manageiq,d-m-u/manageiq,chessbyte/manageiq,matobet/manageiq,syncrou/manageiq,agrare/manageiq,mfeifer/manageiq,aufi/manageiq,pkomanek/manageiq,ilackarms/manageiq,andyvesel/manageiq,mfeifer/manageiq,mkanoor/manageiq,syncrou/manageiq,pkomanek/manageiq,d-m-u/manageiq,billfitzgerald0120/manageiq,josejulio/manageiq,josejulio/manageiq,hstastna/manageiq,durandom/manageiq,mkanoor/manageiq,yaacov/manageiq,kbrock/manageiq,gmcculloug/manageiq,ailisp/manageiq,ManageIQ/manageiq,jvlcek/manageiq,fbladilo/manageiq,chessbyte/manageiq,borod108/manageiq,matobet/manageiq,skateman/manageiq,billfitzgerald0120/manageiq,gerikis/manageiq,NaNi-Z/manageiq,kbrock/manageiq,skateman/manageiq,NaNi-Z/manageiq,matobet/manageiq,tinaafitz/manageiq,ManageIQ/manageiq,mkanoor/manageiq,NickLaMuro/manageiq,lpichler/manageiq,yaacov/manageiq,durandom/manageiq,jrafanie/manageiq,israel-hdez/manageiq,skateman/manageiq,ailisp/manageiq,djberg96/manageiq,romanblanco/manageiq,branic/manageiq,pkomanek/manageiq,borod108/manageiq,chessbyte/manageiq,billfitzgerald0120/manageiq,romanblanco/manageiq,fbladilo/manageiq,ManageIQ/manageiq,matobet/manageiq,andyvesel/manageiq,mzazrivec/manageiq,syncrou/manageiq,juliancheal/manageiq,jntullo/manageiq,jntullo/manageiq,josejulio/manageiq,gerikis/manageiq,tinaafitz/manageiq,ilackarms/manageiq,gerikis/manageiq,NaNi-Z/manageiq,aufi/manageiq