Improve local role handling

- allow role filename to be different than role.name
- test json and rb role files

This patch mimic the Chef::Role.from_disk method which unable to read in
subdir (how sad!)
You should be able to use `Chef::Role::from_disk(name)` to avoid that case statement, similar to what I did in #28