Union type pattern generation

Here's a compilable & testable POC

![union-match-case-generation-poc](https://cloud.githubusercontent.com/assets/1169339/3086362/3d96fb12-e530-11e3-981e-c45f9629b3e5.gif)

__Named fields handling__
![union-match-case-generation-with-named-fields](https://cloud.githubusercontent.com/assets/1169339/3120442/63974b96-e751-11e3-853f-d611912124e1.gif)


* [x] Handle clause with guard (``when <expr> ->``)
* [x] Handle case when first clause starts without the pipe ``|`` (ex: ``match x with Case1``).
  * I'll try to tokenize lines between ``with`` and the first clause
* [x] Handle nested match clauses
* [x] Add tests for nested match clauses
* [x] Handle combined clauses (ex: ``match x with Case1 | Case2 -> ()`` instead of a separate expression per case)
* [x] Stop displaying smart tag on irrelevant patterns (tuple, records, array pattern...)
* [x] Handle named union case fields

Out of scope:
* ``function Case1 | Case2...``