Use regular expression syntax in SaltEvent.get_event() for tag matching

Hi,

This is a continuation of https://github.com/saltstack/salt/pull/19077
(See discussion there)

Added a cache for regexes (salt.utils.cache.CacheRegex):
  * Default 1000 entries and expires every hour

Functional change is the addition of match_type parameter in get_event and iter_events
```
def get_event(self, wait=5, tag='', full=False, use_pending=False,
                       pending_tags=None, match_type=None):
...
def iter_events(self, tag='', full=False, match_type=None):
...
```
Match types:
  * startswith
  * endswith
  * find
  * regex
The default match_type is opts['event_match_type'] or 'startswith'

Tests should go under `tests/` and in this case `tests/unit`