GUI enhancement

Following your last email, here's a couple of improvements for the GUI.

**From the user point of view:**
- Audio settings (volume, on/off) and anti-aliasing are applied on the fly when the user edits them, instead of waiting the user presses the "back" button.
- Adjusted lists which were expanding outside the menu layout.
- Triangles now have a fixed width.

**Internal things:**
- Replaced GuiElementBase.m_type with an actual enumeration, so no more magic 1, 2, 3 numbers in the code
- Added AddLabel, AddButton, AddList, AddInput methods in GuiController (instead using of GuiElement + type)
- Gui elements typed as labels are automatically not selectable, which means instead of writing:

```cpp
gui.AddElement(layer, 0, id, position, text);
gui.GetLastLayer()->GetLastElement()->SetSelectAble(false);
```

You can simply write:

```cpp
gui.AddLabel(layer, id, position, text);
```

- Use TextEntered instead of KeyPressed for catching user input (no problem with the font)
- Better const-correctness for methods
- Replaced a lot of object copies with const references