Looks good. Personally I do not use lot control, but there was big demand for this kind of extension on the forum.
Ad 1. Seems most of the basic functionality for serial/batch control is covered by your description. Probably in final version the new item options should be included also in item category and company setup (as default setting). Also current batch/expire date inquire for controlled items should be implemented.
Ad.2 The best implementation form for such feature seems to be module. Unfortunately current FA framework does not support additional fields provided by modules in standard transaction forms. Such improvement to extension system is not trivial, so maybe better way for now is just to make the serial/batch control included in core FA source. The only condition which have to be fulfilled is additional control in company settings which would switch on/off batch control functionality. As for most businesses batch control is not required, the related fields for batch selection, expiry date etc.in delivery/invoice/inventory forms should be completely hidden when the feature is switched off on company level. Otherwise it would be big, annoying and not needed performance lost on data entry for most FA users. (BTW Currently we use Mercurial for version control, and not SVN).
Ad 3. You can rely on FA team help in functionality design process, we can also provide you advice on FA internals later during implementation. I'm also sure there is a lot of current FA users which will serve as testers for your code. Batch/serial control is subject not addressed so far in FA only due to lack of free resources, so if you want to support the project with your programming skills, you are heartily welcome .
Ad 4. If the code you want to implement is consistent enough with core FA source style, and the extension details were consulted with us to ensure the best possible interoperability with other parts of core sources, I see no problem to make it available to public as soon as it is ready and tested.
The only real constraint we have is FA release policy which does not allow database changes in minor releases. Therefore all development should be done on unstable branch available in FA Mercurial repo, which is forthgoing code for 2.4 release.
Janusz