Change Options::peripherals to use a Properties pointer.

This avoids calling the copy constructor of Properties. Previously
the implicitly generated copy constructor did the wrong thing as it didn't
copy each property, resulting in a use after free when the original was
deleted.