Preserve newlines in command args

Closes: #8234

This fix works by parsing each line of input sperately then recombing.

Test playbook:
```
---
 - hosts: localhost
   tasks:
   - shell: |
      a=foo
      echo $a > /tmp/test_a
   - shell: |
      b=bah; echo $b > /tmp/test_b
   - shell: |
      cat >/tmp/test_c <<EOF
      heredoc
      EOF
- shell: |
      date > /tmp/test_d
      creates=/tmp/test_d
```

Output matches expected (See #8234)
```
$ ANSIBLE_NOCOWS=1 ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook setup/test.yml

PLAY [localhost] **************************************************************

GATHERING FACTS ***************************************************************
ok: [localhost]

TASK: [shell a=foo
echo $a > /tmp/test_a
] ************************************
changed: [localhost]

TASK: [shell b=bah; echo $b > /tmp/test_b
] ***********************************
changed: [localhost]

TASK: [shell cat >/tmp/test_c <<EOF
heredoc
EOF
] *****************************
changed: [localhost]

TASK: [shell date > /tmp/test_d
creates=/tmp/test_d
] *************************
changed: [localhost]

PLAY RECAP ********************************************************************
localhost                  : ok=5    changed=4    unreachable=0    failed=0

$ tail /tmp/test_*
==> /tmp/test_a <==
foo

==> /tmp/test_b <==
bah

==> /tmp/test_c <==
heredoc

==> /tmp/test_d <==
Tue Jul 22 14:58:28 BST 2014
```