Add unique() modifier

* Add `BaseProvider::unique($reset = false)
* Add `UniqueGenerator` proxy class
* Refactor `optional()` tests for better coverage
* Merge `optional()` and `unique()` documentations

Closes #171
Merge pull request #182 from fzaninotto/unique

Add unique() modifier