ports: treat ports as a new network entity

Previously, the only way to add a port to a vertex was to add an edge
connecting two vertexes. Now, a user can add and remove ports
independent of the edges in the network.

Related to #51.
Merge pull request #52 from frenetic-lang/ports

ports: treat ports as a new network entity
Added core and sexplib to oasis dependencies
Use Jane Street's Core as Standard Library

- Use sexp conversions for most types
- Use Core's collection types (Map, Set, Array and Hashtbl)
- Change function calls as needed for the Core equivalents
Added sexplib and comparelib as dependencies
Add sexp and compare to all exposed types
Core: fix function return type warning