Added device_type support for users and images

Changed users module to require a device type when creating a user.
Changed cli module to require a device type when creating a user,
and added command to list supported device types.
Changed config schema and example file to use openstack.images
object to store device types and image IDs in key/value format.
Changed setupuser module to use image ID based on device type.
Changed user module and cli clear-vm-info command to set the user's
vm_ip and vm_id to undefined; they must be undefined for the
setupuser module to create a new VM when that user logs in.
Updates for destroying VMs

Fixed error in openstack destroyVM function to refer to the
correct client, which was updated elsewhere in a previous commit.
Changed users removeUserVM function to fail on users that have no
vm_id defined, those are users whose vm_ip was manually assigned.
Updates for automatic VM creation

Separated automatic VM creation from authentication (now happens
during VMREADY_WAIT state in proxy).
Updated setupuser module to prevent creating VMs for users who
have a manually assigned vm_ip.
Updated openstack module to use correct private address field, and
to clean up (destroy) a VM if a creation resulted in an error.
Added BKS generation

Updated generate_tls script to generate a Bouncy Castle trust store
that includes the CA certificate. This trust store can be compiled
with the client to "pin" that CA certificate and increase security.
Added Bouncy Castle JAR file and updated license accordingly.