Add and implement CommandVisibility, add some more javadocs and NonNull
annotations