Remove the Initialize2 function from the external API

This function no longer needs to be public since one can pass
SEncParamExt to the normal Initialize function.
Simplify the CWelsH264SVCEncoder::Initialize2 method

Remove the useless iInitType parameter, make the method
private within CWelsH264SVCEncoder class, give the pointer
parameter the correct type, avoiding needless casting.
Remove unnecessary checks/initialization from the Initialize method

Initialize2 does the same checks and initializes the same fields.
Fix building with REC_FRAME_COUNT defined
Move REC_FRAME_COUNT logging into the Initialize2 method
Make Param*Transcode take a const reference

There is no need to modify the caller's struct.
Don't needlessly copy the input parameter struct
Mark the Initialize pointer parameter as const

This makes it clear to the callers that the struct will
not be modified by this call.
Remove a field from SWelsSvcCodingParam that already exists in SEncParamExt
Respect the bEnableRc field in SEncParamExt
Don't copy out the SEncParamBase, manually read the individual fields instead
Don't have SEncParamExt inherit SEncParamBase

Instead just duplicate the common fields. These fields had to
be duplicated for the C interface compatibility anyway - but
this way there is no risk to accidentally introduce an ABI
break since there is no need for the layout of SEncParamBase to
actually match the start of SEncParamExt.
Use SEncParamExt in ProcessEncodingSvcWithParam

Both FillSpecificParameters and ParseCommandLine use parameters
that don't exist in SEncParamBase.
Split the encoder Initialize method into two

This avoids the struct type casting and having to pass a parameter
that says which kind of struct it actually is.
Remove the now unused INIT_TYPE data type