Added file encoding support

Hey there

I've redone the file encoding support and tested it several times. Its now using the autodetection based on chardet.

### How does it work:
#### New Ini Setting:
fallbackEncoding (if the autodetection fails, this setting is used)
#### New Option:
editor.encoding (Overrides the autodetection functionality. Useful when you manually want to open files in specific encodings)
Convert this to a promise:

    var encoding = self.encoding();
    return (encoding ? Promise.resolve(encoding) : chardet.detectFileAsync(path)).then(function (encoding) {
      // return fs.readFileAsync etc., lines R80-R94
    });