Removing Artifacts & Adding Gitignore

### Removal of Compiled output

Removing compiled output is recommended because keeping it around would require all changes to update the binary to reflect the source. This could lead to a lot of maintenance and possibly a mismatch situation. Additionally, it's considered bad practice and will just increase repository size needlessly.

### Removal of Compiler Artifacts

Purely generated content, doesn't need to be in the repository because the code will generate it.

### Removal of User-Level IDE Files

**.suo** is the solution settings file, this file is unique on each copy of the project and will change simply by opening the project.

**.user** are user-level settings in a project/solution.

### Removal of Code Search Databases

The .sdf and the .opensdf files from what I understand are code-search libraries used to assist your IDE in finding things quickly. The documentation states they're generated on the fly each time you load your project and dont need to be in the repository.