Get the correct bounding box for node labels
Currently, we scale nodes so that node label will fit inside the node itself. The way that I implemented the behvior was through the function annotation_extent(p, annotation; width_scalar=0.06, height_scalar=0.096). Which takes in the annotation text and tries to guess the bounding box for that text. The actual size of the bounding box can depend on the plot size, aspect ratio, font size, font type, axis_buffer and other things. Furthermore, since we don't use monospace fonts, the bounding box depends on the text itself. annotation_extent is very simplistic and usually makes a bounding box that is way too big. Therefore, one way to fix this issue would be to fix the annotation_extent function. Perhaps there is a way to get the bounding box of plot annotations that I am missing. If so, then using that functionality would be a superior way to fix the problem.
Some examples
g = wheel_graph(6)
graphplot(g, names=["AAAAAAAAAAA","iiiiiiiiiiiii"], nodeshape=:rect)

g = wheel_graph(3)
graphplot(g, names=["AAAAAAAAAAA","iiiiiiiiiiiii"], nodeshape=:rect, axis_buffer=1.0)

g = wheel_graph(4)
graphplot(g, names=["AAAAAAAAAAA","iiiiiiiiiiiii"], nodeshape=:rect, size=(800,800))

The same problem occurs when trying to use the edge_label_box attribute.
Even worse, annotation extent completely ignores multiple lines in text, so "line one\nline two\nline three" will completely fail.
I think that any improvements on the above examples would be fantastic. Getting a function that can return the exact bounding box of text would be perfect.