Nodes will now sync config with each other.

In a multinode system, saving the schedule configuration on one node
will not affect other nodes since they didn't know that the
configuration was changed. We need some kind of mechanism for notifying
the other nodes that configuration was changed. This was implemented as
a rest API call. When an admin change the configuration, the node that the
admin is on will notify all currently known nodes that the configuration
has been changed.

This rest API call is done using the Restlet provided client. I've hardcoded
the url, just modifying the domain. Best I could do given
that there seems to be no way to get information about other nodes from
the building block API. New libs added were to enable Restlet https
client connections. These new libs also required new permissions.

Note that for the Java socket permissions, apparently, you can restrict
the domains that the app can connect to. I've put in *.lms.it.ubc.ca for
now and hopefully that works.

There is now a ScheduleConfiguration jsonintermediate class for
serializing schedule configuration to json. I was previously using the
SavedConfiguration class itself for that but the way it was implemented
using the Properties class meant that I couldn't deserialize back from
json if it contains arrays or maps.

If notification of other nodes fail, the save configuration returns with
an error. Note though that this error is the same error as if the
configuration wasn't properly saved to database. If only the node
notification part failed, then the configuration was actually saved
properly to the database, just that the other nodes weren't updated with
it. You will see the nodes that couldn't be contacted listed as part of
the error message.

The node errors needs to be manually dismissed by clicking the X button.
The node success messages will automatically disappear like the "Save
Successful" message.