Spec for defining a parser.
body() :: String.t
opts() :: map
page() :: %Crawler.Store.Page{body: body, opts: opts, processed: term, url: url}
url() :: String.t
parse({:error, term}) :: :ok
parse(page) :: {:ok, page}