Crew Monitoring Computer improvements, wallets working with computers

* Can now get crewmember names from PDAs, rather than reporting "Unknown" if the PDA does not contain an ID.
* No longer shows "Random Assistant's ID Card (Assistant)", now shows "Random Assistant (Assistant)".
* Wallets (and anything else implementing a `GetID` proc) work with `get_authentification_name`/`get_assignment`.
* New proc: `get_authentification_rank`, returns the rank from ID/PDA/wallet/whatever, like `get_authentification_name` etc.
* Alt-titles are shown on crew monitor.
Basically ````FindNameFromID(human)````. Again has the issue of looking in the hand tho.
get_authentification_rank, get_assignment and get_authentification_name can be rewritten to something like:
````
if(wear_id)
    var/id = wear_id.GetID()
    if(id)
        return id.registered_name/assignment/rank
return if_no_id/if_no_job
````
PDAs, wallets, and ID cards all override GetId(), potentially other ID sources as well.