Buffer: concat multi buffers

When use `Buffer.concat` like below:
```js
  var buf1 = new Buffer('hello');
  var buf2 = new Buffer('world');
  var buf = Buffer.concat([buf1, buf2], 6);
  console.log(buf.toString() + '  :  ' + buf.length);      // hellow : 6
```
 It's ok. 
But, if **totalLength** less than ` listBuffers.length - lastBuffer.length ` , it will throw a **RangeError**.
```js
  var buf1 = new Buffer('hello');
  var buf2 = new Buffer('world');
  var buf = Buffer.concat([buf1, buf2], 4);   // throw new RangeError
```

I think, if someone specified **totalLength**, maybe they just want a buffer has that length.
So, return a buffer with that length may be better than throw an error.