(PUP-957) Remove special meaning of Regexp[r] in =~ !~ expressions.

There are several issues with the previously implemented support
where a parameterized Regexp was a stand in for a real regular
expression:
* The match variables where not set (and would be difficult to return
  in general since Regexp's and Patterns can be nested in other types).
* Blurry line between what a Regexp type is, and String since Regexp[r]
produces a RegularExpression Type, not a Regexp instance.

This simply removes the special handling. A user can still use:

* Regexp (/..../)
* A String - transforms to a Regexp
* Pattern[p] type (since it is a real subtype of String)
(maint) Fix type parser arg count errors and handling of regexp
(PUP-957) Add match function that returns matched result as array.

The function handles matching of String, and Array[String] against:
* regexp
* string
* Regexp type
* Pattern type
(PUP-957) Add checks for match against "any regular expression"
Merge pull request #2617 from hlindberg/pup-957_match-vars-and-regexp-type

(PUP-957) Change match operator wrt. Regexp type and add match function
Merge branch 'master' of https://github.com/puppetlabs/puppet