Fix #17, ensure the keyfile is writable before creating a user

https://github.com/opscode/chef-server/issues/17 is the related issue.

This just ensures the file exists and is writable before creating the user.

Requires manual testing.
I'm confused on how this works for you.

```
irb(main):002:0> File.writable?("foo", "w")
ArgumentError: wrong number of arguments (2 for 1)
        from (irb):2:in `writable?'
```

Unfortunately, if the file doesn't exist, I believe that will return false even if the directory is writable:

```
 File.writable?("./nothinghere")
=> false
```

I couldn't find a function in the File class that does this, but I think you need something like:

```
File.exist?(config[:filename]) ? File.writable?(config[:filename]) : File.writable?(File.dirname(config[:filename]))
```