feat(hosted): let callers choose the Parse mode
Hosted OCR always asks Parse for mode: 'auto', so a caller who knows the document is scanned cannot force OCR, and one who wants text-only extraction cannot ask for fast.
Node takes parseMode: 'auto' | 'fast' | 'ocr', Python parse_mode (exported as ParseMode), the CLI --parse-mode. The default stays auto, so the request body is unchanged for existing callers. The value is checked when the call starts, before any conversion or request: a bad one rejects with code: 'hosted' in Node and raises HostedError in Python, and the CLI exits 2 like other usage errors.
The Rust crate and the Wasm binding never call Parse, so they are untouched.
Tests against the local /v2/parse stub now also read the options each request sent: the default is auto, a custom mode is sent as given, an invalid mode raises with no request made.
Summary by cubic
Lets hosted OCR callers choose the Parse PDF mode instead of always sending auto.
Node takes parseMode, Python takes parse_mode (exported as ParseMode), and the CLI takes --parse-mode, each accepting 'auto', 'fast', or 'ocr'. The default stays auto, so existing callers see no change in the request body. Invalid values are rejected before any conversion or request, even when the document would convert locally: in Node with code: 'hosted', in Python with HostedError, and in the CLI with exit code 2.
The Rust crate and Wasm binding never call Parse, so they are untouched.