Revert "ripping out SORT_VALUES (Issue #240) for now, since I can't make it work on Hadoop"

This reverts commit 1e304c5419ad64b8dcfd10cf2ace4c8dcbfd6094.

Conflicts:
	mrjob/job.py
	mrjob/runner.py
first stab at using the Hadoop O'Reilly book to get secondary sort working

mr_next_word_stats.py works in inline mode, but can't even read in lines
on EMR
protocols now tolerate trailing tab after value, and added a test to ensure our protocols won't
read the trailing tab as data (other than the raw protocols, which are supposed to).

(this can happen with sort_values because Hadoop ends up treating the whole line as the key,
and assumes the value is an empty string, which needs to be joined to the "key" with a tab)
looks like sort_values doesn't key comparator options; Hadoop does the right thing by default
don't need to set a comparator either. cool!
reworked SORT_VALUES to only exist inside MRJob, since it's just jobconf and partitioner settings
added another kind of backup file to .gitignore
added tests!
added SORT_VALUES to documentation, and moved Hadoop details to jobconf() and partitioner() docs
made section capitalization consistent
updated copyright notices
removed duplicate definition of _SORT_VALUES_PARTITIONER
added "Contributors" to copyright notice
fixed test name
reworked protocol tests to handle Hadoop adding trailing tabs
Merge pull request #670 from davidmarin/lyft-sort_values

Secondary sort by value