Bringing name and text domain through constructor to remove dependency on argument class.
Added getSlug().
Removed old slug class.
Corrected name assignemtn.
Added text domain as property.
Empty check for $name.
Started setPublic().
Finished setPublic().
Commented out old code.
Updated error message.
Made $public private.
Updating comments.
Moving property order.
Updating comments.
Added setLabels().
Better grammar.
Added setDescription().
Added type checking for $name.
Removed validation stuff.
Removed over zealous validation.
Moved assignments around.
Added setMenuPosition().
Added setMenuIcon().
Fixed docblock for getSlug().
Fixed setMenuIcon().