Enabling storage of roles in subdirectories

Storing roles in subdirectories is already effectively enabled
for Hosted Chef, as the directory structure gets flattened when
they are uploaded. But it is not currently possible with Chef-Solo;
one has to flatten the directory manually before running Chef-Solo.
This patch changes that behavior, and enables Chef-Solo with roles
in subdirectories.
Added duplicate role detection for Role.from_disk

Now Role.from_disk raises an error when it detects two roles
of the same type (.rb or .json) exist anywhere in the roles directory
or subdirectories.
check whether the variable is empty rather than an empty string
Fix upstart provider so parameters work correctly
CHEF-5265: ensure service_name isn't clobbered by parameters
CHEF-5247: Add a unit test

Unfortunately the way that Chef::Provider::User::Solaris subclasses
Chef::Provider::User::Useradd we call both Solaris#manage_password
and Useradd#manage_user whenever we call Solaris#manage_user. If we
are updating a password, we only want Solaris#manage_password, so we
have a kind of convulted way set to tp turn Useradd#manage_user into
a noop. This test tries to ensure we can noop in the way we want to,
but we really need a functional or integration test here.
[CHEF-5314] Support override_runlist CLI option in shef/chef-shell
[CHEF-5314] Add unit and fucntional specs
Enabling storage of roles in subdirectories

Storing roles in subdirectories is already effectively enabled
for Hosted Chef, as the directory structure gets flattened when
they are uploaded. But it is not currently possible with Chef-Solo;
one has to flatten the directory manually before running Chef-Solo.
This patch changes that behavior, and enables Chef-Solo with roles
in subdirectories.
Added duplicate role detection for Role.from_disk

Now Role.from_disk raises an error when it detects two roles
of the same type (.rb or .json) exist anywhere in the roles directory
or subdirectories.
Fixed specs for Chef::Role.from_disk

Specs were broken because of rebasing the glob_roles
patch onto the current master. Also removed an
exception raise I'd accidentally left in.
Merge branch 'glob_roles' of github.com:bensomers/chef into glob_roles

Conflicts:
	lib/chef/role.rb
	spec/unit/role_spec.rb
removed Chef::Role.from_disk 'force' option

Option was unused and did not work in any case.
Add .project to .gitignore. Obvious fix.
Fix apt_spec test to expect custom timeout for apt-cache command
Merge pull request #1482 from ekrupnik/gitignore

Add .project to .gitignore
Merge pull request #1443 from opscode/ryancragun/CHEF-5314_11-master

[CHEF-5314] Support override_runlist CLI option in shef/chef-shell
update for merges
Merge pull request #1486 from opscode/mcquin/merges-06-11-2014

update for merges
Return rack-compliant 404 messages