When using a union as a restriction, bind free variables  from left to right whiel discarding matching types
Added Enumerable#compact_map (thanks @kostya for the idea) and fixed return type of Array#compact
Merge pull request #108 from nuisanceofcats/master

Silence warnings from "which" correctly.
Discard matching types when restricting a union with another one