Ongoing work on update info engine.

This is the first phase of an ongoing work to allow `pm-updatestatus` to work independently of update.module. I'm doing this in a new `update_info` engine called `drush`.

Within this commits there's a big refactoring of `release_info` engine to untangle it and convert into OO. There'salso a refactoring of `pm_parse_project_version()`, the responsible of parsing `project-VERSION` strings.


This is not intented to be merged yet. I just want to see Travis complaining and document the API changes.

Any suggestion welcome!

Here're the API changes:

```diff
-pm_parse_project_version($requests) 
+pm_parse_request($request)
+pm_parse_version($version, $is_core)

-function drush_pm_find_project_from_extension($extension)
+function drush_pm_enable_find_project_from_extension($extension)


-release_info_fetch(&$request, $restrict_to = '', $select = 'never', $all = FALSE)
+drush_release_info_updatexml::selectReleaseBasedOnStrategy($request, $restrict_to = '', $select = 'never', $all = FALSE, $version = NULL)

-release_info_get_releases($requests)
#Removed. This is done now in pm-releases callback.

-release_info_check_project($request, $type = NULL)
+drush_release_info_updatexml::checkProject($request, $type = NULL)

-release_info_print_releasenotes($requests, $print_status = TRUE, $tmpfile = NULL)
+UpdateServiceProject::getReleaseNotes($version = NULL, $print_status = TRUE, $tmpfile = NULL)

-function updatexml_get_release_history_xml($request)
+drush_release_info_updatexml::getInstance($request, $cache_duration)

-updatexml_get_url($request)
+UpdateServiceProject::buildFetchUrl(array $request)

-updatexml_get_releases_from_xml($xml, $project)
+UpdateServiceProject::parseXml(SimpleXMLElement $xml)

-updatexml_determine_project_type($xml)
+UpdateServiceProject::getType()

-updatexml_best_release_found($releases)
+UpdateServiceProject::getBestRelease(array $releases)

-updatexml_specific_release_found($releases)
+UpdateServiceProject::getBestRelease(array $releases)

-updatexml_specific_release_version($request, $xml)
+UpdateServiceProject::getSpecificRelease($version)

-updatexml_most_appropriate_release($request, $xml)
+UpdateServiceProject::getRecommendedOrSupportedRelease()

-_release_info_compare_date($a, $b)
+UpdateServiceProject::compareDates($a, $b)

-release_info_filter_releases($releases, $all = FALSE, $restrict_to = '', $show_all_until_installed = TRUE)
+UpdateServiceProject::filterReleases($filter = '', $installed_version = NULL)
```
Does $releases_info have valuable info that is not in $rows? If so, then the current code is good. If not, we can just remove this line and backend calls will receive $rows ... I dont recall what I was trying to do here.