feat($interpolate): use custom toString member if present

BREAKING CHANGE: use custom toString implementation when present on object value types.
Behavior is consistent with other implementations.

Closes #7317
we have an `isFunction()` method:

```
if (isFunction(value.toString)) {
  value = value.toString();
} else {
  value = toJson(value);
}
```