Split constraints and pattern matching into separate files

More convenient - also updated all constraints to be full functions
with proper documentation
Updated pat framework to not rely on a singleton value

_DoesNotExist_ had a few flaws:

- Could cause problems with threads
- Polluted namespace
- Forced an artificial separation between keyword and positional arguments

This change deprecates Exists in favor of Any for keyword arguments