Indians edge Mariners 5-4 on Hafner's 2-run homer