Fix #1169: Make IR printer print cases of match tree nicely

It now looks like this:

    match (x1) {
      case 1 | 2 | 3:
        mod:s_Predef$.println__O__V("low");
      case 4:
        mod:s_Predef$.println__O__V("four");
      default:
        mod:s_Predef$.println__O__V("other");
    }
Merge pull request #1189 from gzm0/fix-ir-printer-match

Fix #1169: Make IR printer print cases of match tree nicely
Use a dedicated IR node for Object.getClass().

Because it cannot be expressed in terms of anything else,
even for values known to be Scala.js objects.
Use normal methods instead of helpers in the IR.
Avoid crashing for classpath elements that do not exists on the file system.

Added DummyVersion constant value, exists() to detect file that does not exists and getDummyVersion to provide a string version for a dummy file.
Implemented DummyVersion and isDummy in physical and node file systems.
Added simple ClasspathElementsTraverser tests using the PhysicalFileSystem.
Merge pull request #1167 from oleastre/ignore-file-if-not-exist

Ignore classpath elements when it's neither JS, JAR or directory (probably file does not exists).
Give proper IR implementations of hijacked classes.

This allows the optimizer to handle methods of hijacked
classes in a completely normal way, in particular equals
(which previously had a dedicated foldEquals handler),
but also toString, compareTo, etc.

When methods are not inlined, they remain, as usual, as
normal Apply nodes, with a receiver that is a hijacked
class. This will cause, as before, the desugaring to
produce calls to the helpers. So, methods that cannot be
inlined are redirected normally to helpers.
Merge pull request #1190 from sjrd/helpers-as-normal-methods

Use normal methods instead of helpers in the IR