Ensure features that execute bundle run properly

Bundle commands in cucumber features were using the parent bundler
environment causing the tests to simulate installation improperly.
Thus, wrapping the scenarios in `Bundler.with_clean_env` block ensures
a clean bundler environment for tests.

Note: each scenario must install its own bundle to ensure a clean
environment.

In this commit:
* Improve cucumber feature tests
* Refactor tests for readability
* Rename integration spec directory to features