Fix serial console terminal issue and extract same logic to be helper function (#171)

## Problem
When using terminal through serial port (baud rate: 115200, Parameters: 8N1) with Inquirer.js. I found the render is very strange.
Please see following examples.
###### The First Example
```shell
node examples/pizza.js
Hi, welcome to Node Pizza
? Is it for a delivery: (y/N) abc
```
Press <*backspace*> key and result in:
```shell
node examples/pizza.js
Hi, welcome to Node Pizza
? Is it for a delivery: (y/N) abc? Is it for a delivery: (y/N) ab
```
Right, the whole question with answer (**? Is it for a delivery: (y/N) ab**) was rendered again in a wrong position.
###### The Second Example
```shell
Hi, welcome to Node Pizza
? Is it for a delivery: No
? What's your phone number: 2222222222
? What size do you need: (Use arrow keys)
❯ Large 
  Medium 
  Small
```
Press <*Down*> key and result in:
```shell
Hi, welcome to Node Pizza
? Is it for a delivery: No
? What's your phone number: 2222222222
        ? What size do you need: 
  Large 
❯ Medium 
  Small
```
Right, The question (? What size do you need: ) was shifted and aligned with (❯ Medium ).
###### The Third Example
```shell
Hi, welcome to Node Pizza
? Is it for a delivery: No
? What's your phone number: abc
```
Press <*Enter*> key and result in:
```shell
Hi, welcome to Node Pizza
? Is it for a delivery: No
                                    ? What's your phone number: 
>> Please enter a valid phone number
```
Right, the whole question with answer (? What's your phone number: ) was rendered again in a wrong position and was aligned to the error message ( >> Please enter a valid phone number ).
## Troubleshooting
To investigate this issue for two days. And also tried several approaches to workaround this issue but can't get a good result.
Eventually I found this was caused by wrong terminal info, that is, the result of ```process.stdout.rows``` and ```process.stdout.columns``` are ```0```.
## Solution
To solve this we can force the cursor to move to the leftmost position so the rendering will start from the beginning of column.
Thank you for the reviewing.
If I understand correctly we should use `takeUtil` like following code since there's no validation required with `handleSubmitEvents` by referring to prompt `list`.
```js
  var events = observe(this.rl);
  events.keypress.takeUntil( events.line ).forEach( this.onKeypress.bind(this) );

  events.line.take(1).forEach( this.onEnd.bind(this) );
```