Use Adamantium instead of IceNine

Adamantium gives us better immutability guarantees. In particular this
used to succeed, and now does no longer.

x=H[:div, 'foo']
x.children.first << 'bar'
x #=> H[:div, 'foobar']
Include an *optional* core extension of NilClass

An opt-in way to make nil implement the to_hexp conversion protocol,
returning an empty text node. This makes it easier to do things like

H[:div, [
  '(',
  H[:div, foo] if foo,
  H[:div, bar] if bar,
  ')'
]]

vs

H[:div, [
  '(',
  foo ? H[:div, foo] : '',
  bar ? H[:div, bar] : '',
  ')'
]]
Memoize with adamantium, instead of manually