Refactored the add/edit/delete attributes admin

- Code is now much more DRY (no more double error checks for add an edit).
- Always provide feedback for errors:
  - Error shown if attribute name, slug or type is left empty.
  - Error shown if attribute slug already exists.
- New error check added for attribute slug which should not be [a reserved term](http://codex.wordpress.org/Function_Reference/register_taxonomy#Reserved_Terms).

I found out about the reserved terms the hard way. I was using a term name called "type" and the URLs were not working. Turned out it is a reserved term. Providing feedback about this immediately when saving an attribute name will prevent buggy behavior later on.