Websocket handler context path can be specified with a :path option

This commit also fixes some unintended behavior of the options map:
since we were specifying option defaults in another arity, specifying
any options required you to specify all options. (E.g. passing {:send
chan} would cause :recv to be nil.) This is now handled with :or style
defaults.