Added the function uedges->dot but I have not tried yet (shame on me)

I'm making this commit, because I'm planning to disect this function to
understand it better, and the key here is the data type i'm using... I'll be
back
Added some example data in the file.

These functions are very tied to the way we have modeled the world for the
wizzard game, so I have include that data in the file. Reading the data helps
to understand better what the heck this unedges->dot is doing.
Fixed errors with unedges->dot
Added graph->dot, next step is to add ugraph->png
Fix to create correctly the undirected graph in dot format

Just forgot to change the "->" for "--" to make dot (graphviz) to draw straight
lines without any arrow.
Fix the .png extension removal

When introduced this I didn't realize that the function was returning nil when
the extension .png was not found, instead of just returning the string
unmodified.
Fixed.
Fixed error in the generated dot file

ugraph->dot had an error, that made graphviz to fail while generating the png
file.

   [2]> (ugraph->png "prueba.dot" *wizzard-nodes* *wizzard-edges* )
   Error: prueba.dot.dot:5: syntax error near line 5
   context:  >>> GARDEN- <<< -LIVING_ROOM[label="(EAST DOOR)"];
   NIL

The problem was that I was trying to generate a digraph and setting links in the form "--".

   digraph {
   LIVING_ROOM[label="(LIVING-ROOM (YOU ARE IN TH..."];
   GARDEN[label="(GARDEN (YOU ARE IN A BEATI..."];
   ATTIC[label="(ATTIC (YOU ARE IN THE ATTI..."];
   GARDEN -- LIVING_ROOM[label="(EAST DOOR)"];
   ATTIC -- LIVING_ROOM[label="(DOWNSTAIRS LADDER)"];}

In graphviz the digraph keyword sets a context, where the links have to be
defined with arrows "->", but not with "--" straight lines. I did a mistake
while basing this function in the previous graph->dot function...
Now the problem is fixed, instead of using the keyword digraph, I use the
keyword "graph", which sets the right context to draw undirected graphs.
Extension of the "ext removal" feat.

The functions graps->png and ugraph->png in the original book example, were
expecting a file with extension ".dot", so that they will generate that file,
pass it to graphviz (dot) and let graphviz add a extension .png to the original
file. With that behavior if the user introduced "prueba.dot", after calling the
function, a file called "prueba.dot" and a file called "prueba.dot.png" were
created.

With this a extrange situation could happen if the user introduced
"prueba.png". Then the files "prueba.png" and "prueba.png.png" would have been
created. And that could be confusing to the user who may try to open prueba.png
and find it doesn't work.

So the idea was to find when the user introduced a "png" extension and try to
remove it. In the same way, I was adding a ".dot" extension to the file
generated with the graph. Some kind of normalization.
However, as a result, when calling the functions, the following files were created

   | Input         | dot file name generated | png file name generated |
   | ------------- | ----------------------- | ----------------------- |
   | "prueba.dot"  | prueba.dot.dot          | prueba.dot.dot.png      |
   | "prueba.png"  | prueba.dot              | prueba.dot.png          |
   | "prueba"      | prueba.dot              | prueba.dot.png          |
   | "prueba.doc"  | prueba.doc.dot          | prueba.doc.dot.png      |

With this commit, I'm changing the behavior so that the program does not
generate more extensions than the necessary, the behavior has been changed now
to do the following:

   | Input         | dot file name generated | png file name generated |
   | ------------- | ----------------------- | ----------------------- |
   | "prueba.dot"  | prueba.dot              | prueba.png              |
   | "prueba.png"  | prueba.dot              | prueba.png              |
   | "prueba"      | prueba.dot              | prueba.png              |
   | "prueba.doc"  | prueba.doc.dot          | prueba.doc.png          |

A sample of the execution (adding an echo at the begining of the cmd):

   [2]> (graph->png "filpando.png" *wizzard-nodes* *wizzard-edges*)
   dot -T png -o filpando.png filpando.dot
   T
   Break 1 [2]> (graph->png "filpando.dot" *wizzard-nodes* *wizzard-edges*)
   dot -T png -o filpando.png filpando.dot
   T
   Break 1 [2]> (graph->png "filpando" *wizzard-nodes* *wizzard-edges*)
   dot -T png -o filpando.png filpando.dot
   T
   Break 1 [2]> (graph->png "filpando.doc" *wizzard-nodes* *wizzard-edges*)
   dot -T png -o filpando.doc.png filpando.doc.dot
Changed name of digraphs.lisp to graph-util.lisp

The idea is to follow a little bit what is said in the book, and also to be
more coherent with the functions that this file contains: it can generate also
undirected graphs...
Fix remove-ext function error when playing with short filenames

When the user introduced a name of size less than three, the following error
happend:

   [1]> (remove-ext ".png" "fly")

   *** - SEARCH: :START2 should be an integer >=0, not -1
   The following restarts are available:
   ABORT          :R1      Abort main loop
   Break 1 [2]> (remove-ext ".png" "fly.png")
   "fly"

The problem has been fixed by adding a check before attempting to calculate the
index from where the search should start.

Three executions after this changes, will describe the current behavior:

   [1]> (remove-ext ".png" "fly")
   "fly"
   [2]> (remove-ext ".png" "fly.o")
   "fly.o"
   [3]> (remove-ext ".png" "fly.png")
   "fly"
Little simplification on the comparisson

Instead of checking if the (> (length the-string) (length ext)), I'm checking
if size-excluding-ext is greater than 0.

The behavior is preserved with this changes.

[1]> (remove-ext ".png" "fly")
"fly"
[2]> (remove-ext ".png" "png")
"png"
[3]> (remove-ext ".png" "pinng")
"pinng"
[4]> (remove-ext ".ping" "ping")
"ping"
[5]> (remove-ext ".ping" "pong.ping")
"pong"
[6]> (quit)
Bye.
Adding readme file to describe what graph-util.lisp is doing.
Merge branch 'fix-remove-ext-short-filenames-error'
Changed name of the README to Readme.md

To make sure is interpreted as a markdown file
Added link to ../drawing-graphs/graph-util.lisp
Started with the Gran Theft Wumpus project
Add random-node function
Added make-edge-list

This function creates a list of random interconected nodes. The loop in
make-edge-list, creates a list of lists of pairs, which is then
converted just into a list of pairs by means of using apply and append
functions.
Added a bunch of functions to find and link unconnected nodes

The topology of the graph used as a city, is traced randomly. With this
technique the possibility of having unnconected nodes is quite hihg, so
with the functions created, the idea is to track these unconnected nodes
or islands, and trace edges (or links) with at least one connected node.

The main function, here is connect-all-islands, which uses all the
auxiliary functions connect-with-bridges, find-islands, get-connected,
and direct-edges.