Added more permissions tests

1. Test for vm power on permission
2. Test for vm provisioning permission
3. Test for vm removal permission
4. Test that any changes to a role's permissions take effect during on the next login
5. Refactored out the quadicon locator for VMs for reusability
6. Added the convenience function get_first_vm() to cfme/infrastructure/virtual_machines.py
7. Added get_number_of_vms() to cfme/infrastructure/virtual_machines.py
8. Refactored error message storage in test_permissions method in cfme/tests/configure/access_control to include a traceback with the error
Just cosmetic, but wouldn't this be a bit more readable?
```python
single_task_permission_test(
    [
        ['Infrastructure', 'Virtual Machines', 'Accordions'],
        ['Infrastructure', 'Virtual Machines', 'VM Access Rules', 'Operate', 'Power On'],
    ],
    {'VM Power On': _test_vm_power_on}
)
```