attempt to resolve and bind any variables within this
request. This method can be called iteratively and is permitted
to make perminent changes to the request since this should be a clone (or
bind will attempt to resolve and bind any variables it contains against
those in the bindings. If it has any unresolved bindings and this is an
iterative call, it can return the unresolved count. If it is not an iterativeCall,
it cannot match and the exception is thrown.
If the request determines that it cannot match at anytime, it should throw
the cannot match exception.