Add initial support for preflight requests

This follows the steps in section 6.2 of the specification.  Steps 1
and 2 of both section 6.1 and 6.2 have been combined as intial sanity
checking steps before selecting a processing model.