etcdctl: handle empty key permission correctly
etcdctl: handle empty key permission correctly

Current `etcdctl role grant-permission` doesn't handle an empty key
("") correctly. Because the range permissions are treated as
BytesAffineInterval internally, just specifying the empty key as a
beginning of range introduces an invalid permission which doesn't work
and betray users' intuition. This commit fix the way of handling empty
key as a prefix or from key in permission granting.

Fix https://github.com/coreos/etcd/issues/8494

glevand/coreos--etcd,sebrandon1/etcd,ajityagaty/etcd,dannysauer/etcd,mkumatag/etcd,ajityagaty/etcd,akauppi/etcd,mickep76/etcd,lorneli/etcd,xiang90/etcd,vimalk78/etcd,etcd-io/etcd,fanminshi/etcd,dannysauer/etcd,mickep76/etcd,rnaveiras/etcd,bluebreezecf/etcd,bluebreezecf/etcd,li-ang/etcd,akauppi/etcd,bdarnell/etcd,mkumatag/etcd,joshix/etcd,gyuho/etcd,etcd-io/etcd,glevand/coreos--etcd,rnaveiras/etcd,mqliang/etcd,heyitsanthony/etcd,lorneli/etcd,gyuho/etcd,sinsharat/etcd,a-robinson/etcd,bdarnell/etcd,cockroachdb/etcd,rnaveiras/etcd,mkumatag/etcd,whuwxl/etcd,li-ang/etcd,whuwxl/etcd,fanminshi/etcd,vimalk78/etcd,cockroachdb/etcd,joshix/etcd,heyitsanthony/etcd,a-robinson/etcd,YuleiXiao/etcd,visheshnp/etcd,coreos/etcd,etcd-io/etcd,coreos/etcd,sebrandon1/etcd,sinsharat/etcd,xiang90/etcd,mqliang/etcd,ajityagaty/etcd,YuleiXiao/etcd,mqliang/etcd,visheshnp/etcd