Updated HtmlFormatter and Retriever to use Protocol.__impl__/1

Elixir removed `Protocol.__impl__/0` in commit elixir-lang/elixir@a46b78a35339cfef2a10b4d2cf4e44c960b7035e

Retriever was checking if  `__impl/0__` was exported to determine if a module was a `defimpl`.

HtmlFormatter was using the value of `__impl__/0` to determine if the child impl was an implementation of the parent protocol. Not sure if that's allowed by the language, but I left it in, using `Module.split` to chop up the name and verify the protocol was a prefix of the impl.