fix Trie's keysWithPrefix() throws if string not found

Fixed the following to return empty array rather than throw.
```
var trie = new Trie();
trie.addStrings(["a","ab","bc","cd","abc"]);
results = trie.keysWithPrefix("blah");
...
z:\natural\lib\natural\trie\trie.js:105
        if (node.$) {
                ^
TypeError: Cannot read property '$' of null
    at recurse (z:\natural\lib\natural\trie\trie.js:105:17)
    at Trie.keysWithPrefix (z:\natural\lib\natural\trie\trie.js:119:5)
    at Object.<anonymous> (z:\natural\trie-test.js:10:16)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3
```
Also slight perf improvement for isEmpty() method per http://jsperf.com/object-keys-vs-hasownproperty/16.