Define Razor::Matcher error handling and some numeric operators

This specifies more precisely the behavior of the `fact` operator an undefined fact is encountered. Specifically, it adds a second, optional parameter to `fact` that is returned if no matching fact is found. If the second argument is not supplied, and `fact` is unable to find the fact named, it raises an ArgumentError.

In the case where an error is raised while evaluating a tag against a `Razor::Data::Node` object, the node logs the error and propagates it up the stack to be returned to the user. A node cannot be bound to a policy while any tags it is evaluated against (i.e. all of them) are in error.