Added a check for the single.php template, if it is absent, index.php wi...

Single.php is not a requirement for a WordPress theme. If a comment is not accepted, and if the single.php template is not available, index.php should be used. It is the only alternative you can be sure that will exist. For my theme, this works fine. It only has an index.php.
The user_register & post_comment actions only pass the respective entity id's. So, $data is always going to be empty here?