Fix PipedRDD

PipedRDD is badly broken.  Take this as an example:

```python
>>> import dpark
>>> list(dpark.makeRDD(range(4), 2).pipe('cat').collect())
['0\n', '0\n', '1\n', '2\n', '2\n', '3\n']
```

After you apply this patch, here is the same example:

```python
>>> import dpark
>>> list(dpark.makeRDD(range(4), 2).pipe('cat').collect())
['0', '1', '2', '3']
```

Here is a python translation of Spark's [PipedRDD test suite](https://github.com/mesos/spark/blob/master/core/src/test/scala/spark/PipedRDDSuite.scala?source=c):

```python
import dpark

def test_base_pipe():
    nums = dpark.makeRDD([1, 2, 3, 4], 2)
    piped = nums.pipe('cat')
    c = list(piped.collect())
    return c == ['1', '2', '3', '4']

def test_short_lived_command():
    nums = dpark.makeRDD([1, 2, 3, 4], 2)
    pipe = nums.pipe('echo hello')
    c = list(pipe.collect())
    return c == ['hello', 'hello']

def test_non_zero_exit():
    nums = dpark.makeRDD([1, 2, 3, 4], 2)
    pipe = nums.pipe('cat nonesistant_file')
    try:
        pipe.collect()
    except Exception, e:
        return e.message == 'exception:Subprocess exited with status 1'
    return False

print 'test_base_pipe', test_base_pipe()
print 'test_short_lived_command', test_short_lived_command()
print 'test_non_zero_exit', test_non_zero_exit()
```

And when I run the tests (`python t.py 2>/dev/null`) here's what I get:

Test                     | Before | After
------------------------ | ------ | -----
test_base_pipe           | False  | True
test_short_lived_command | False  | True
test_non_zero_exit       | False  | True

I also made `dpark.schedule.OtherFailure` subclass `Exception` which allows me to catch the error.