style(Adapter): cleanup redundant method declaration

Remove methods already defined in interface
refactor(Adapter): remove getName() from BaseAdapter

Each adapter must return a unique name so defaulting
doesn't make sense then
refactor(Adapter): a detailed API for adapters

All the methods of the adapter interface describe
what is explicitly required to be returned by an implementation

Use exception instead of returning false
Using exceptions allows for more detailed errors
fix(Adapter): add missing for pull-request fields

add labels, milestone and assignee
fix(Adapter): wrong description for getReleases()

And add getReleaseAssets() for getting assets
fix(Adapter): require id for release

As its impossible to upload assets
update TestAdapter with latest API spec
update Commands with latest API spec
fix(Adapter): TestAdapter returning wrong format
refactor(Adapter): make getName() static

This change allows to register adapters dynamically.
You can just use the Class name, and ask the name of the adapter
refactor(Adapter): make openPullRequest() return array

Returns the number and html_url
add ArrayUtil - Array Utility class
fix(Adapter): validateAdapterClass() must use getName()

Constant usage is removed
feat: add Configurator interface

This decouples the Adapter configuration from the Adapter
and 'core:configure' command, allows for flexible configuration
and feature enhancements
feat: add AdapterFactory for creating adapters and Configurators
refactor(Application): use AdapterFactory for initializing adapters

Update CoreConfigureCommand to use Adapter Configurator
refactor(Adapter): remove obsolete methods

Remove

* __construct()
* doConfiguration()
* getName()
fix: update bin/gush for the AdapterFactory

Only adapters that are compatible are registered
fix(Factory): AdapterFactory wrong condition check
test: Update tests and fix broken

Use prophecy instead of PHPUnit Mock in CoreConfigureCommand