Refactoring IO classes, async & offline storage

Created classes File, Directory and FileSystem in wrap/io_wrap.dart which mirror chrome.FileEntry, chrome.DirectoryEntry and chrome.FileSystem. Using
io.dart in Dartium should be simple as only io_wrap.dart
would need to be changed.

Created a PathRep class which is basically a String with
some helper methods from the path library. This class
has been propogated throughout the existing code replacing
many Strings.

Rewrote io.dart to supply asynchronous functions. This
change propogated out to entrypoint.dart and
source/hosted.dart.

Renamed wrap/blawrap.dart to wrap/bla_wrap.dart. I wouldn't
mind reducing it to simply wrap/bla.dart...

Stored the working directory in offline storage, so that
now the user is only prompted for a directory on the
first opening of the app.

Symlink code was commented out as I don't know how to
approach them at all.

R=tapted@chromium.org

Review URL: https://codereview.appspot.com/45210043