[4.1] URL detection interface

- Adds ability to overwrite default URL detection logic.
- Improves on the default URL detection and should fix #158
- Extracted some URL manipulation logic into `Facebook\Url\FacebookUrlManipulator` with plans to extract the URL manipulation stuff from `Facebook\Entities\FacebookRequest` so that it can be shared with the new pagination stuff (to come after this merge).
- Complete with documentation. :)
Yeah, I saw that in the original code and thought it was a bit curious. Why wouldn't you just strip all those params out? None of those values should exist in the clean URL so it should be safe to just strip them all without looking for specific values before stripping. Unless I missing something on this point. :)