Better docs and some refactoring in Plug.Builder

Docs reviews:

- better module docs, with examples on overriding `init/1` and `call/2` and a
  more detailed description of the order of the plug pipeline
- more detailed docs for the `plug/2` macro
- more detailed docs for the `compile/3` function, mentioning guards and adding
  some examples

Code reviews:

- extracted the `quote_plug_call` function which returns the quoted application
  of a plug based on its type (module plug or function plug), so that the main
  logic of `quote_plug` is never repeated
- renamed the `:call` atom to `:module` in order to be consistent with `:fun`
  (that I actually renamed to `:function` for clarity