grunt.log – add formatting support and implicitly cast msg to a string

This pull request includes the following:

**string formatting!**
```javascript
// stdout: Grunt – The JavaScript Task Runner
grunt.log.write('%s – The JavaScript Task Runner', 'Grunt');
```

**implicit casting of `msg`**!
```javascript
// stdout: i am the string!
// this previously would have resulted in a fatal error
var buffer = new Buffer('i am the string!');
grunt.log.write(buffer);
```

**bugfix!**
*may not actually be a bug, but it looked liked one to me*
```javascript
grunt.log.error();
grunt.log.error('the horror');

// this throws an error, log.error only bumps the errorcount
// when a message is provided
assert.equal(grunt.fail.errorcount, 2);
```