Shared memory

Adds preliminary support for kernel shared memory objects. These are memory regions shared by userland applications and OS services. For example, shared memory objects are used for interfacing with the GSP (graphics) and HID (user interface) services. Previously, Citra hard-coded address 0x10002000 for the start GSP shared memory, which is actually only used by libctru homebrew. This branch fixes this.