Improve configuration to avoid API errors
Is your feature request related to a problem? Please describe.
In #23, we see a confusing behavior with varying configurations of smartapp.permissions(perms) and smartapp.appId(val). Configuration (💪man) has unique requirements that, until recently, weren't really well-recognized. When you set explicit permissions, you also need an appId. Otherwise it's technically not necessary.
Describe the solution you'd like
Re-work how the smartapp configuration works. "Builder pattern"/"fluent interface" is nice for some things but it limits how we can validate the smartapp's configuration at startup time. We need to ensure that we have values set - if permissions are applied, the appId has to be set, otherwise configuration will fail. So we can throw errors at runtime.
Utilize the existing constructor options object and get rid of appId(), permissions(), etc. Those should not change after the instance construction for the sake of validation.
Describe alternatives you've considered n/a
Additional context n/a