[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. :)
Why all above methods are public? They are not part of the interface..
I understand that it's for code readability, but there is the case where user will try to call them when they type hint the interface. The base goal of a URL detection handler is to detect the current URL, isn't it? :)