Mark DocumentChanges from remote sources as external

I thought the isExternal() flag on DocumentChange objects would be useful for some app updates I was making today, and then saw the TODO in the code and dug in.

The iOS code that does this is already in a comment in the Android source, so I added a couple tests and then pulled out the bit that figures out whether or not a change is external.

One caveat: I don't know what `isExternal()` is supposed to mean with respect to changes received through a Router. The code will currently return false in all cases.

I know you're busy with the project restructure, so no rush, especially since I now realize checking if `getSource() == null` in a ChangeListener has the same effect :)