Ensure tests do what they are supposed to

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