Disables recursion in phoenix.start to fix #462.

As per discussion of issue #462, phoenix.start now
* is nonrecursive
* takes a list of routers to start as an argument
* will only attempt to guess a router in non-umbrella project
* will defer to a default list of routers provided in the mixfile
Tidied up based on review suggestions
increase overview with an index

* add contribution section
Replace MyApp.Router.Helpers.url with MyApp.Endpoint.url
Merge pull request #528 from gjaldon/patch-1

Replace MyApp.Router.Helpers.url with MyApp.Endpoint.url
Merge pull request #522 from tonini/refine-readme

increase overview of readme
Ensure CodeReloader is removed when disabled
Bump version and changelog
Update CHANGELOG.md
Improve ranch errors for websockets
Merge pull request #530 from fishcakez/jf-new-errors

Improve ranch errors for websockets
Improve websocket error to give accurate mfa
Update start task to be endpoint compatible
Do not make phoenix.routes recursive too
Start endpoints in the application supervision tree
Fix the build
Plug protect_from_forgery in browser pipeline by default
Generate IO data in HTML templates
Endpoint.Adapter.static_path/2 with no cache
Enable Code Reloader for test env

This is useful when testing views and templates outside of a web request.
Otherwise, changes to views are not picked up and recompiled.