Transparent NullMoney operations

Operations relative to other MoneyInterfaces objects are now
transparent (they do not return $this, but the comprared Money object).
This avoids that issuing such operations between Money and NullMoney
would return NullMoney instead of Money objects.

Setters were also deleted from MoneyInterface, since objects
implementing this interface will be value objects.

See issue #292 
I like the idea.
I think we should elaborate a bit more what happens if the `$other` argument was a `NullMoney`. 
If the convention we agree upon is to *always return the $other argument*, it means that when `$other` is a `NullMoney`, another `NullMoney` will be returned. I think there is no escape on this.

If we agree upon what is stated above, the best way to return a negative amount is to define an `invert` method in `MoneyInterface`. The implementation would be the same for all the objects in the hierarchy, both `Money` and `NullMoney`, which screams for an abstract parent class. More on this in the PHPDoc section in the example below
```php
/**
 * This is the implementation for the Money class, maybe NullMoney's
 * implementation should just return $this.
*/
public function invert()
{
    /*
    * The following could return a NullMoney if $this is a NullMoney
    */
    return Money::create(-1 * $this->amount, $this->currency);
}

/**
 * This is the implementation for the NullMoney class
 */
public function subtract(MoneyInterface $other)
{
    return $other->invert();
}