Make ExternalChangeLine more robust.

This removes some assumptions from ExternalChangeLine.
This also adds a test case for ExternalChangeLine, but does
not fully implement it.

Change-Id: I63b62e60ffee2f2c3af8c445f3723f6d68018442
Merge "Make ExternalChangeLine more robust."