Fix broken whyrun unit test for user resource

This initially appeared as a failing test user Ruby 1.8 with an error of
"undefined method `sp_pwdp' for nil:NilClass." This was ultimately because
we were doing a lookup for user info for 'adam' which didn't exist. However,
getpwsnam will return nil if you're not root and much time was spent reworking
the pending blocks which are particularly tricky and usually are not doing
what you think they're doing.

Running these tests under bundler will require the ruby-shadow gem, so I
have added that as a development dependency.
Restrict ruby-shadow development dependency to *nix.

It doesn't compile easily on windows and we probably don't need it
there anyway. The 'ruby' platform requirement in the Gemfile excludes
Windows.
[CHEF-3305] chef-server Gemfile improvements

* make the `chef` and `chef-solr` normal Rubygem.org
dependencies (Bundler's default behavior), the version
for each should match the current chef-server-api and
chef-server-webui version respectively.
* add `unicorn` as a production dependency so the
improved Gemfile can be easily leveraged in some
forthcoming omnibus-chef improvements.
* add a grown-up Gemfile to chef-server-webui
Merge branch 'CHEF-3305'
Mac has no /etc/shadow or lshadow and cannot install ruby-shadow
Add additional read_crontab stubbing

The cron unit tests were calling the new read_crontab method which
was failing on Windows 7 for me because of the lack of a crontab
command.
Add exclusion filters to test for file resource

According to Chef::Resource::File there are different state attributes
for windows than other platforms. This commit adds exclusion filters for
the state test for windows. It also adds a placeholder pending test for
windows as we should be testing those state variables.
debug status and header info for API requests

this lets you see the exact reponse code, e.g., 200 vs. 201
Merge branch 'debug-http-status-and-headers'
Refactor file_class from link into a mixin

Chef::Mixin::FileClass#file_class provides ::File or on Windows
Chef::ReservedNames::Win32::File, which is useful for cross-platform
symlink support.
CHEF-2747: cross platform support for remote directory and sym-links

Use Chef::Mixin::FileClass to provide a cross-platform check
for a symlink
Refactor remote directory provider for Windows

Windows treats a symlinked directory as a directory
whereas linux treats the symlink as a file. Thus on windows
we have to remove the directory as if it were a directory.

Also, we can only create links on windows if we are an Administrator,
so I've added a pending rescue to one test accordingly.
Whitespace cleanup
Increase func test expected range from 1 second to 2 seconds for breathing room
Add exclusion filters to test for file resource (really)

2d498f46 added exclusion filters for the template spec.
Seeing the same issue here confused me, then I duplicated that effort.
I'm adding pending tests for Windows because I'm not sure if there is
a reasonable way to test similar functionality on Windows.
Fix file unit test for windows state attributes

Chef::Resource.state claims to return a hash, and therefore
has no accessor method named #state.
Fix template spec on Windows by stubbing out Etc

Using the Etc module to get information about root isn't
going to work on Windows, or any platform without uid/gid 0,
so we stub it out and return a struct.
Fix file diff spec test by removing newline

The newline character ends up leaving a \r on windows. The test does not
appear to need it so just remove it rather than dealing with a line
terminator constant.
File unit test: use Dir.tmpdir

This doesn't really matter as it appears we're fully stubbed out, but does
ensure the code is compatible with windows paths at least.
Stub out Etc calls in the ownership/perms spec

Similar to c19064fdb, ensure calls to Etc succeed on Windows.