Introduce system editor function in \WP_CLI\Utils

Adds a function called `launch_editor_for_input()` which launches the
system's editor to allow file editing of post content, etc. Should
account for system line-endings properly, but probably needs testing on
Windows to be sure. Function returns false if no change (ie user :q!'s
out of vim), or updated content if any change is made.

Also adds two new subcommands to `wp post`:
- `wp post create --edit`	Launches the editor to build the post
							content before creating post.
- `wp post edit <id>`		Edits post <id>'s content in system editor.
Use WP_CLI::launch to open editor

Also use wp_tempnam to create file, and give the created file a
meaningful name rather than just using system or php's tempfile name.
Handle error caused by reading empty file

`fread()` will throw an error if trying to read an empty file (ie if
user deleted all post content or quit the editor on `wp post create`.
Detect that and fail gracefully.
Use file_put_contents/file_get_contents instead of fwrite/fread

Much simpler this way. Also does away with the need to check for empty
output, although now we have to check the return value of
`launch_editor_for_input` strictly against false, since its possible for
it to return an empty string now (editing a post and deleting all the
content).
Make error messages and output codes more logical

Use `WP_CLI::error` for any fatal errors. Output a warning rather than
an error if user aborts the editor (At this point it exits without
performing any action just like an error would, but it shouldn't be
considered an error. Also, its possible that commands using the editor
function will go on to perform other actions.)

Also, whitespace cleanup and minor refactoring... making a helper
method `_edit()` in post.php to make editor functions more reusable.
Whitespace cleanup

Use spaces for inner-line spacing
Merge pull request #302 from goldenapples/system-editor

Introduce system editor function in \WP_CLI\Utils