Avoid prototype property name conflict in cache key

The value that is contained as key of `Object.prototype` couldn't be dasherize.

For examples:
``` javascript
Ember.String.dasherize('toString'); // function toString() { [native code] }
```

This reason is that cache is object (not Hash or Map) inherited
`Object.prototype` as its property.

`Object` should not be used as key of cache that accept any keys from user
input.
So I used prefix `:` as the key of cache.
Remove unnecessary '#'

'#' is unnecessary for putting return value.
Merge pull request #2207 from tricknotes/remove-unnecessary

Remove unnecessary '#'
Merge pull request #2204 from tricknotes/stop-using-cache-for-dasherize

Stop using cache for `Ember.String.dasherize`
I apparently give terrible advice. the prefix is needed turns out JS
can do this lookup for us.
Merge pull request #2208 from stefanpenner/master

I apparently am an idiot. Thanks @kselden for pointing this out.