added .action(), errors plugin and retain user modes

Not sure how to split multiple commits into their own pull requests, so here's a pull request with several changes I've made.

User modes are implemented like this: 
```javascript
var names = [
  {name: "tj", mode: "@"},
  {name: "tobi", mode: "+"},
  {name: "guy", mode: ""}
];
```
how come "errors" instead of "error"? otherwise LGTM