changes to types inferred for functions

There are two key changes:
1. Allow function types to include properties, just like the type of any
other object.  So now, we can handle the following completion ('$$' is
the completion point):

function f() {}

f.p = 3;
var q = f.$$;

2. Handle the case of any function being invoked as a constructor, not
just those functions starting with a capital letter.  So now, there is
a uniform type structure for all functions.

 Signed-off-by: Manu Sridharan <msridhar@us.ibm.com>
Initial implementation of index files for library content assist.

This commit contains the following major changes:

* Removed types.js.  Previously, it contained hand-written models for
  key libraries (ecma5, the DOM, and node.js) and also utility methods
  for manipulating the types inferred by content assist.  Now, the
  utility methods are in typeUtils.js.  The hand-written models have
  been serialized as index files.

* Added support for parsing index files and using them during content
  assist.  The key file is typesFromIndexFile.js.  The main content
  assist module, esprimaJsContentAssist.js, was modified to use
  typesFromIndexFile.js instead of types.js.

* Generated index files corresponding to the previous library support
  that was in types.js.  They are in the plugins/esprima/indexFiles
  folder. The format is borrowed from that used by Tern.

* Modified esprimaJsContentAssist.js to return a promise from
  computeProposals().  This is required since content assist may now
  perform asynchronous loading of index files.  Currently, the browser
  and node.js index files are loaded asynchronously when needed.

Signed-off-by: Manu Sridharan <msridhar@us.ibm.com>
Merge remote-tracking branch 'manu/index-files'
Bug 402137 - Interactive tooltips with preview options (allow clickable tooltips)
[Bug 414170] support just changing the selection from plugin implementing orion.edit.command
fix edtior tooltips font