Add headings for methods in the output of `ls`

You will see headings when a table has more than 35 methods.
Otherwise, there is no need in them.
refactor #process
refactor the #process method

This has created a whole lot of additional methods. Perhaps these should
be moved into some sort of Presenter (puke) classes.
stop passing so many parameters around

The write_out* methods all use to take multiple parameters which were
actually available without having to pass them around. Made these
parameters ivars and attr_reader'ed all of them.
don't use unneccessary meta-programming
readability in write_out methods

thanks to @locks for this one
refactor raise_errors_if_arguments_are_weird as per @rking advice
clean up redundant code
extract method on redundant code
Revert "Add headings for methods in the output of `ls`"

This reverts commit 1c33a7396486b1f2a76521bf5b34239d8305184e.

Looks unpleasant for most of Pry users.
Made sure completions proc do not return nil

The completion proc returning nil causes errors in input systems that only
expect strings (e.g. Coolline).
gist_spec: remove some repetitive code
Edit: handle blanks in filenames correctly

Also, move path escaping to `Editor` class. The test is currently
failing (looks like a bug in `Editor`).
Only shellword escape filenames in system calls on linux
Remove needless old_editor restoration

Unfortunately nested assignments to @old_editor meant that the
original @old_editor was permanently lost. This caused sporadic
failures of spec/editor_spec.rb which was relying on Pry.config.editor
containing a string.
Fix indentation (HARDER)
Use proper temp directories for each OS

Also, there was a failing test on Windows ("should shell-escape files").
You will see it if you're running tests on Windows. Make it conditional.
Fix errors in tests on Windows

Some tests are still failing, though. This commit fixes wrong usage of
temporary paths on Windows. Please, note: the `edit` command is working
well; the issue is in poor tests.

Prettify some ugly code in `spec/editor_spec.rb`.
Remove redundant call to Shellwords.escape

The "edit" command already intelligently escapes arguments, if need.
This commit also fixes four failing tests on Windows.
Fix errors on Rubinius and JRuby

These implementations have slightly different APIs for getting your
temp directory path.