WIP: Use a strategy pattern to get the field value

### Right now

Let's say I provide a `'callback' => array(array($this, 'myCallback'), array($arg1, $arg2)`.

This is the function signature for an EFQ provider:

```php
  /**
   * My callback
   * 
   * @param \EntityMetadataWrapper $value
   * @param mixed $arg1
   * @param mixed $arg2
   * 
   * @return mixed
   */
  public function myCallback(\EntityMetadataWrapper $value, $arg1, $arg2) {
    ...
  }
```

This is the function signature for a DB provider:

```php
  /**
   * My callback
   * 
   * @param object $value
   * @param mixed $arg1
   * @param mixed $arg2
   * 
   * @return mixed
   */
  public function myCallback($value, $arg1, $arg2) {
    ...
  }
```

This is the function signature for a CTools provider:

```php
  /**
   * My callback
   * 
   * @param array $value
   * @param mixed $arg1
   * @param mixed $arg2
   * 
   * @return mixed
   */
  public function myCallback(array $value, $arg1, $arg2) {
    ...
  }
```

### Desired scenario
As I said, this will break a lot of sites using RESTful.

This is the function signature for **all** providers:

```php
  /**
   * My callback
   * 
   * @param \RestfulPropertySourceInterface $source
   * @param mixed $arg1
   * @param mixed $arg2
   * 
   * @return mixed
   */
  public function myCallback(\RestfulPropertySourceInterface $source, $arg1, $arg2) {
    $value = $source->getSource();
    ...
  }
```