setVisibility() can accept visibility constants or strings

This patch (with tests accourse) allows VisiblityTrait::setVisibility() to accept the strings 'private', 'public', or 'protected', or the constants T_PRIVATE, T_PUBLIC, T_PROTECTED...or an existing TokenNode.