warn upon pin reuse; closes #548

- `Board#register` is now an object, properly indexed by address.
- `Board#register` is of type `Object<String,Array>`, to potentially store multiple objects against the same address
- `Board#serialize` will retain the same behavior if only one object is used for an address; otherwise it calls `reduce()` for each

I couldn't figure out where to put tests for this. 
Don't take this the wrong way, but I'm taking over this fix because it's a bit more involved than I had anticipated. I _do_ want you to review it before it lands. Once you see what I had to do, the multi pin aspect will make sense.