A Double-Difference Earthquake Location Algorithm: Method and Application to the Northern Hayward Fault