rpcgen: if main is not provided, _svcstate_lock should be extern
When we do generate svc stubs without main, we should declare "mutex_t _svcstate_lock" as "extern", so we can decide where we are going to instatiate it. This lock is used for internal housekpeeing, the name is fixed and will get on the way in case when we implement multiple RPC programs in the same application.
This change does also reveal issues with some of the applications:
fmd: missing mutex_init()
gssd: missing mutex_init()
kwarn: missing mutex_init()
idmapd: needs _svcstate_lock to be added
Testing done: build/install/boot, RPC related programs behave as expected.