More detailed logging and APIChanges refactoring

The 7bc5aac commit contains some more detailed logging. See the commit message for details.

The main motivation behind this PR is to reify information about api changes that incremental compiler considers. We introduce a new sealed class `APIChange` that has (at the moment) two subtypes:

  * `APIChangeDueToMacroDefinition` - as the name explains, this represents the case where incremental compiler considers an api to be changed just because given source file contains a macro definition
  * `SourceAPIChange` - this represents the case of regular api change; at the moment it's just a simple wrapper around value representing source file but in the future it will get expanded to contain more detailed information about API changes (e.g. collection of changed name hashes)

The APIChanges becomes just a collection of APIChange instances. In particular, I removed `names` field that seems to be a dead code in incremental compiler. The `NameChanges` class and methods that refer to
it in `SameAPI` has been deprecated.

The Incremental.scala has been adapted to changed signature of APIChanges class. The `sameSource` method returns representation of APIChange (if there's one) instead of just simple boolean. One notable change is
that information about APIChanges is pushed deeper into invalidation logic. This will allow us to treat the APIChangeDueToMacroDefinition case properly once name hashing scheme arrives.

This commit shouldn't change any behavior and is purely a refactoring.