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)
Just my uninformed buldozering through the code. This looked suspicious at the time and I assumed it might not store the newly introduced "public" state.

I will revert this change.