Search

Generalize the string parsing from metasploit-framework's `cmd_search` so that the parsing can be shared between `msfconsole` and the Metasploit Pro UI.  Search operators can be declared on the attributes of a class, and attribute operators from associations can be exposed on a class.  Finally, `search_with` allows search operator classes to be attached to a class to search unions, intersections or other abilities that cannot be accomplished with the attribute operators.  `search_with` is used to reimplement the old search operators from `cmd_search` in terms of the new attribute operators.