GEOMESA-67 Checking for visibilities before allowing write, enforcing existing schema if present 

In order to ensure that data does not get written with different visibilities (which could lead to duplicate rows), when a feature is accessed added checks to ensure that the datastore is configured the same as the existing feature. If not, it fails quickly (throws an exception). This behavior was deemed better than switching to the existing configuration, which might lead users to get unexpected results unless they peruse the logs for warnings.
Once the visibilities were locked down, added visibilities to one of the metadata rows, which allows us to check that the user can read data before the user is allowed to write data. Other metadata rows were left without visibilities for simplicity (metadata should not contain protected data anyway).
I refactored AccumuloDataStore fairly heavily in order to make it more obvious which methods were internal vs external and remove some old geotools methods that are no longer used.
This is the port for accumulo 1.4. See https://github.com/locationtech/geomesa/pull/60 for accumulo 1.5.