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