Add access parameter

The idea behind adding the "access" parameter is to generate documentation by only displaying objects that match the parameter settings. The parameter can have the values ```public```, ```protected```, ```undefined``` or ```private``` and multiple access parameters may be specified.

E.g. ```--access public --access protected``` will exclude ```undefined``` and ```private``` objects from the documentation.

To facilitate this a split between 'access undefined' and 'access public' is being introduced, which allows detection later on in the process. Tests have been expanded to include new test cases.

(This is a revised version of pull request jsdoc3/jsdoc#816)
When the `--private` option is used, we really ought to set both `env.opts.private` and `env.opts.access` appropriately, so that both are correct. (We can't just drop `env.opts.private`, unfortunately.) That would allow you to simplify this check (which has a bug, I think--what happens when you run JSDoc with `--private` but not `--access private`?).

You could do this (sort of) cleanly by updating [`jsdoc/opts/args`](https://github.com/jsdoc3/jsdoc/blob/0a776648bf2f7a2fb4873e5fa8552eec81dd0fac/lib/jsdoc/opts/args.js) so that the call to `argParser.addOption('p', 'private', ...)` takes a function as the last parameter (similar to `-q/--query`). The function can then modify `ourOptions` to add an `access` property if necessary, and to add `private` to `ourOptions.access`.

Let me know if you have questions about this.