I use 2.x and use a plugin to define added metadata elements.
My plugin code is a bit different from yours for what fields define an element, and has the insert operation within the hookInstall() function, etc., but it has the same approach - edit the element definitions in a source file and run a program to register them into Omeka.
I chose to do this rather than enter them by hand using the web based method described by kecan.
It led to a big programming effort to get it working right. I would not have used a plugin if I had known the effort to get it right.
There are a lot of tricky details to managing the added metadata by way of a plugin. It's "relatively" simple to have a plugin add a group of metadata element definitions the first time. But then what about the case when it is installed into a system that already has the added elements. Is that an "Update" operation or "Do nothing" operation? Then serious complexity hits when uninstalling the plugin as the operation to remove the added metadata elements. Removing the elements is a bit tricky to get right.
If you are not extremely comfortable with PHP and SQL, you should avoid managing the added metadata element definitions by way of a plugin.
Rather than help you get deeper into a hole by talking about your code on github, I'd advise you to just accept that using the admin web interface to register the definitions is the best way to go.
kecan's description is clear about an important aspect - adding new metadata elements should be done within Item Type Metadata.
Follow his advice and add a new item type, such as "Buildings" and define your set of Elements for it. Be aware that the names of the elements must be unique within Omeka and not match any existing element name defined in any other type.
You should not define a new Metadata Element Set to hold your added elements, which seems like a reasonable way to handle adding new metadata elements. At least it seemed reasonable when I did it. Your code on github uses the insert_element_set() function, so maybe you have the same view. Don't do it.
This is because the CSV Import plugin, which you might want to use if you have an approach to do batch operations for registering information into Omeka, only handles metadata values that are for elements in the two standard Element Sets - Item Type Metadata, or Dublin Core. It will not handle importing metadata for elements in added Element Sets.