Also allow "_" to be valid identifier

A "_" is a valid python identifier as long as it
is not the first letter of the given attribute (as
an attribute dict doesn't have the concept of
protected/private variables).

Also include a few links and comments as to why
the restrictions are inplace.

Change-Id: I23f17113cedb99b2817bad0c464a43d10af6722c
Merge "Also allow "_" to be valid identifier"