Ensure tests that depend on bundler 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