opening a non existent serial, throws an exception trying to close a non opened port!

Calling `.close()` on a closed port, raises an exception. This happens when you try to open a non existent port. This patch fixes.
Of course, the cb(err, param) convention must be followed.
However, you don't have to use an Error object. Sending err as an string is enough:
``` javascript
callback && callback('Serial port error');
```

But! I just remembered something. This line will cause unexpected behavior!
If modem is opened, but later when using the modem an error happens, we will call the callback on open(), which is totally unexpected.

``` javascript
var m = new Modem;
m.open('/dev/ttyUSB0', function() {
   console.log('Modem opened');
});
```

Given that code, imagine this scenario:
User connects the modem, runs the program.
All goes fine and modem is opened and program is working fine. So we get this output:
"Modem opened"

Now, user disconnects the modem. This will cause an error on. And with this code, we will call the callback on open() once again and we get a second 
"Modem Opened"
output. Which is of course unexpected.