Provide default value to result method. Fix #1495

This pull request fulfills the proposal suggested in #1495. With this addition, `_.result` now supports:

```javascript
_.result(null, 'method', 'default') // => 'default'
_.result('string'.match('missing'), 1, 'default'); // => 'default'
_.result({}, 'method', 'default') // => default
```
EDIT: Additionally, falling back to a default value when given an object and a property will only happen if the result of _.has(object, property) is falsy:

```javascript
_.result({}, 'method', 'default') // => 'default'
_.result({ method: null }, 'method', 'default') // => null
_.result({ method: undefined }, 'method', 'default') // => undefined
```

I had considered allowing the default value to be a function, which could be fairly useful. However that requires a more significant change and I wanted to first gauge if others found this would be particularly valuable.
think the convention in the library is `value === void 0`. Also above use `void 0` instead of `undefined`.

How should this handle primitives. This will throw an exception for `_.result(5, "x", 4)`