Allowed strings to be provided as the seed, and also allowed multiple seed arguments

This could be useful when testing (which is what I use chance for): the test name can be provided as the seed to ensure the same results every time. Also, a "master key" could be provided as the first argument, and the test name as a second, to allow results to be variable (by changing the master) but repeatable. E.g. in Mocha:

````js
beforeEach(function () {
    chance = new Chance(masterKey, this.currentTest.title);
    ...
});
````
This change made a significant refactor of the constructor function necessary to maintain clarity, so it looks a fair bit different, but still passes all the tests.