Macro Processor

This is a PR for the MacroProcessor utility to generalize macro processing across modules.

Usage would look like this:

```java
String message = "{prefix}&r | {name}: ";

// ctor takes the macros
MacroProcessor processor = new MacroProcessor("name", "role", "prefix");

// MacroProcessor.process() takes the message and the values for the macros in the declared order
message = processor.process(message, "quick_wango", "Developer", "&4Developer");

System.out.println(message); // -> "&4Developer&r | quick_wango: "
```

This is still work in progress