Insert rules in SelectorMap manually to avoid unnecessary allocation.
Eliminate use of `map` by using a for loop.
Avoid unnecessary cloning of Rule in SelectorMap code.

Do this by receiving a borrowed pointer in get_id_name(), etc..
Also, move the received argument in insert() method (instead of cloning it).
Make Rule have Arc<Selector> to eliminate allocation while cloning.
Use push instead of referring to the last element.
auto merge of #1299 : pradeep90/servo/rule-hash-optimize, r=pcwalton

Issue #1274

Also:
+ Reduce number of clones of Rule
+ Make Rule have Arc<Selector>
Use 'match' instead of 'if'.
Enable to update id attribute for Document.getElementById(). (#740)